jQuery表单邮政编码到状态函数

时间:2009-11-25 18:13:16

标签: javascript jquery forms syntax

我正在尝试将预先存在的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;
}

2 个答案:

答案 0 :(得分:0)

除非您的zip字段是下拉列表,否则您最好在函数中使用blurkeyup

$('#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