我正在尝试将预先存在的javascript函数转换为jQuery函数。 该功能来自http://javascript.internet.com/forms/zip-to-state.html 并旨在将用户输入的邮政编码转换为州。我正在使用jQuery 1.3.2,包含所有必需的插件,但我不是很熟悉jQuery语法以及如何从普通的'Javascript语法转换它。
setState函数有两个参数,即zip代码元素和state元素,所以我试着这样做:
$('$zip_code').change( function () { setState($(this), $('#state')); });
有关此语法的任何想法?谢谢,达科他州
function getState(zip) {
if ((parseInt(zipString.substr(zip / 4, 1), 16) & Math.pow(2, zip % 4)) && (zip.length == 5))
for (var i = 0; i < stateRange.length; i += 7)
if (zip <= 1 * stateRange.substr(i, 5))
return stateRange.substr(i + 5, 2);
return null;
}
function setState(txtZip, optionBox) {
if (txtZip.value.length != 5 || isNaN(txtZip.value / 4)) {
optionBox.options[0].selected = true;
alert("Please enter a 5 digit, numeric zip code.");
return;
}
var state = getState(txtZip.value);
for (var i = 0; i < optionBox.options.length; i++)
if (optionBox.options[i].value == state)
return optionBox.options[i].selected = true;
for (var i = 0; i < optionBox.options.length; i++)
if (optionBox.options[i].value == "XX")
return optionBox.options[i].selected = true;
}
答案 0 :(得分:0)
除非您的zip
字段是下拉列表,否则您最好在函数中使用blur
或keyup
。
$('#zip_code').blur( function () { setState($(this), $('#state')); });
我还将$zip_code
更改为#zip_code
。
答案 1 :(得分:0)
你可以保留getState和setState函数,但在你提出如何使用它的问题之前,你应该真正阅读jQuery。如果您甚至不知道语法,可能需要阅读如何使用它。
就像Aberon所说,在这种情况下使用模糊并将'$ zip_code'更改为'#zip_code',其中'zip_code'对应于:
<input type="text" id="zip_code" name="whatever_you_want" />
您还需要一个ID为“州”的选择框:
<select id="state">
... options ...
</select>
然而,Aberon的解决方案仍然无法解决,因为它不完整......
$('#zip_code').blur( function () { setState($(this)[0], $('#state')[0]); });
您想从zip_code输入元素中获取值,从而调用val()。您还希望选择框的DOM元素具有id =='state',因此您不需要使用$('#state')返回的数组,而是需要第一个元素。
尝试一下,我希望这有帮助。
-Stephen