选择下拉列表以输入具有预定义值的文本
Select dropdown to input text with predefined values
我有这种形式,Powerrange字段用于创建URL,但所需的值与输入的值不同! 所以我们需要预定义它们。
<form id="form">
<input type="text" id="powerrange"><br><br>
<input type="radio" name="location" value="store" checked/><label>America</label><br>
<input type="radio" name="location" value="store.au"/><label>Australia and Oceania</label><br>
<input type="radio" name="location" value="store.au"/><label>Africa</label><br>
<input type="radio" name="location" value="store.au"/><label>Asia</label><br>
<input type="radio" name="location" value="store"/><label>Europe</label><br><br>
好的,这就是我到目前为止所拥有的:
function goToPage(){
var location = $('input[name=location]:checked').val();
var idConversions = {"100":14,"101":5000}
$('#powerrange').keyup(function(){
var correctId = idConversions[$(this).val()];
});
window.location.href = "http://"+location+".domain.com/catalog.aspx?section="+correctId+"";
}
编辑的
答案:将select>
替换为<input>
,根据当前选项的文本值验证输入条目。
var minLengthRanges = 10000;
var ranges = $('#powerrange option').map(function () {
var data = {
val: this.value,
section: $(this).text()
}
if (data.section.length < minLengthRanges) {
minLengthRanges = data.section.length;
}
return data
}).get();
var currVal = $('#powerrange option:selected').text();
$('#powerrange').replaceWith('<input id="powerrange" type="number" value="' + currVal + '"/>');
$('#powerrange').keyup(function () {
var val = this.value
if (!val || val.length < minLengthRanges) {
return;
}
var isValid = checkIsValidRange(val);
$('body').append('<p>Value is ' + (isValid ? '' : 'not') + ' a match</p>');
if (isValid) {
var url = '.........catalog.aspx?section=' + val;
$('body').append('<p>URL is ' + url + '</p>');
}
});
function checkIsValidRange(val) {
var isValidRange = false;
if (val && !isNaN(parseInt(val, 10))) {
isValidRange = $.grep(ranges, function (item, index) {
return item.section == val;
}).length;
}
return isValidRange;
}
演示
您需要构建一个预定义的数组,以便您的代码知道 100
= 14
。在 keyup
、 blur
或 submit
或某个适合您的表单事件中,获取文本字段的值,在数组中查找正确的值,然后构建最终链接。
这是一个如何完成的jsfiddle示例
$(function(){
var idConversions = {"100":14,"101":5000}
$('#the-text-field').keyup(function(){
var correctId = idConversions[$(this).val()];
if( typeof correctId !== "undefined") alert(correctId);
});
});
如果您需要在服务器端代码上维护类似的数组,请尝试找到一种共享列表的方法,这样您就不会在两个地方定义"转换矩阵"。就像用php或其他东西构建数组服务器端一样,将其打印为JSON。
相关文章:
- 带有预定义网格的Packey JS
- SVG使用Javascript将形状平滑地变形为其他预定义的形状
- 如何在不预定义的情况下将javascript函数传递到另一个函数中
- 没有预定义宽度的固定元素最初放在引导容器中,不会从父元素继承宽度
- 用javascript为预定义对象设置原型
- AngularJS:如何按照预定义的顺序执行函数
- jqGrid - 如何通过自定义格式化程序提供多个预定义的格式化程序
- 如何使用预定义字符串列表“动态”生成 HTML 代码
- 使用预定义函数的NodeJS async.series
- 如何在HTML中用两个预定义的值绑定选择选项,以在mongodb中插入数据
- CodeMirror编辑器自动完成预定义单词
- 为什么JavaScript闭包不能与预定义的函数一起使用
- 要在html5音频中静音的预定义部分
- 如何在剑道网格中添加具有预定义数据的新行
- 如何通过colResizable设置列的预定义宽度
- ASP.NET网页-使用脚本显示由预定义日期和时间指定的图像/文本
- 选择下拉列表以输入具有预定义值的文本
- 用于文本区域字符计数的预定义函数
- 创建包含预定义数据的文本框
- Javascript:如何获取文本框的值,然后将它们附加到预定义的字符串中,并将浏览器重定向到结果的值