我正在尝试创建一个表单,如果传递的值是“ 0”,则会引发错误。我很沮丧,真的可以使用一些帮助。该脚本有两个功能。首先工作,我可以根据选择更改URL。我遇到问题的地方是我要选择“-”和“选择状态”来触发第二个脚本,该脚本在理论上将突出显示该字段并且不允许用户单击。这是称为“ validateEmpty”的函数

我完全愿意接受另一种方法,这是我发现传递了value.length为0的教程的黑客入侵版本。

示例页面在这里:
http://www.brimbar.com/no_crawl/js-test-homepage.html

要么

代码如下:

    <code>
    <div id="quoteDropdowns">
    <select id="stateType" name="stateType" onchange="dosomething()">
    <option value="select" selected="selected">Choose State</option>
    <option value="IL">Illinois</option>
    <option value="MD">Maryland</option>
    <option value="TX">Texas</option>
    <option value="VA">Virginia</option>
    <option value="--">--</option>
    <option value="other">Other</option>
    </select>
    </div>
    <div id="getAQuote"> <a id="mylink" class="myButton" href="#" onclick="validateEmpty">Get a Quote!</a> </div>
    <script type="text/javascript">
function dosomething() {
    var inputSelector = document.getElementById("stateType");
    var link = document.getElementById("mylink");


    if (inputSelector.value == "VA") {
        link.href = "http://www.test1.com";
    }
    else if (inputSelector.value == "MD") {
        link.href = "http://www.test2.com";
    }
    else if (inputSelector.value == "IL") {
        link.href = "http://www.test3.com";
    }
    else if (inputSelector.value == "TX") {
        link.href = "http://www.test4.com";
    }
    else if (inputSelector.value == "other") {
        link.href = "http://www.test5.com";
    }
            else if (inputSelector.value == "--") {
        stateType.value.length == 0;
        link.href = "#";
    }


    }

    console.log('First Function is Valid');

    function validateEmpty(stateType) {

    var error = value.length==0;

     if (stateType.value.length == 0) {
        stateType.style.border = 'red';
        error = "The required field has not been filled in.\n"
    } else {
        stateType.style.background = 'White';
    }
    return error;

}
console.log('Second Function is Valid');

</script></code>

最佳答案

1)好吧,所以您决定使用嵌入式javascript;)而不是事件监听器,但是为什么每次选项更改时都要设置link元素的href?这不是最佳的。我宁愿在单击链接时按需重定向(按需)。这仅使您拥有一个功能。

2)代替使用if..else尝试使用switch..case构造,这会在以后减轻一些麻烦。此外,它似乎更具可读性,但也许更多是出于偏好。

3)为什么要使用这种扭曲的逻辑进行验证?您的选择元素的值已经是“-”。使用它,或者也可以在switch case的默认部分中处理它(请参阅jsFiddle example),这也可以处理“选择状态”选项。当您单击链接并选择“错误”选项时,您得到警告而不是重定向。

这是我的jsFiddle示例:example

关于javascript - JavaScript下拉表单验证:传递值“0”时抛出错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13711625/

10-11 23:58
查看更多