Javascript / Jquery验证问题?

时间:2014-04-09 14:34:54

标签: javascript jquery validation

我有一个选择框和一个文本框。我需要进行验证,如果两者都被选中我需要警告,如#34;选择一个名称或选择名称",如果我没有选择两者我需要提醒像#34;请选择一个名称或选择名称",如果我选择其中一个,我需要提醒,如#34;感谢您选择名称"。我是通过java脚本完成的,但是我没有得到结果。可以通过使用java脚本/ Jquery来完成吗?任何建议

    <body>
pick name:
        <select id="ddlView">
            <option value="0">Select</option>
            <option value="1">test1</option>
            <option value="2">test2</option>
            <option value="3">test3</option>
        </select>  
</br>
select name:
<input type= "text" name="raju" id="raju"></input>
        <input type="button" onclick="Validate()" value="select" />

        <script type="text/javascript">
            function Validate()
            {
                 var name = document.getElementById("raju");
                 var e = document.getElementById("ddlView");
                var strUser = e.options[e.selectedIndex].value;

                var strUser1 = e.options[e.selectedIndex].text;
                if(strUser==0 && (name==null || name== ' '))
                {
                    alert("Please select a name or pick the name");
                }

               else if( (!(strUser==0)) &&(! (name==null || name== ' ')))
                {
                    alert("Either select a name or pick the name");
                }
          else
                {
                     alert("Thank you for selecting the name");
                }
            }
        </script>


    </body>

4 个答案:

答案 0 :(得分:1)

你的问题是你获得了输入,而不是价值。

替换var name = document.getElementById(&#34; raju&#34;); var name = document.getElementById(&#34; raju&#34;)。value;

此外,您将名称与null和空格进行比较。您必须将它与空字符串进行比较。 (姓名==&#39;&#39;)

答案 1 :(得分:1)

当你在我的Jsfiddle code上看到时,我没有使用oonclick属性,而是使用javascript上的事件监听器(真的更适合你的html)..

document.getElementById("myBtn").onclick= function ()

你忘记了tu的一秒钟检索你的名字输入的值。所以已经返回[HTML DOM对象]而不是null或值。

var name = document.getElementById("raju").value;

答案 2 :(得分:1)

以下是您使用JQuery进行的相同验证,如您所述:

function Validate()
{
    var name = $("#raju").val();
    var selected_name = $('#ddlView :selected').val();

    if(selected_name == 0 && name == "")
    {
        alert("Please select a name or pick the name");
    }
    else if( !(selected_name == 0) && name != "")
    {
        alert("Either select a name or pick the name");
    }
    else
    {
        alert("Thank you for selecting the name");
    }
}

Fiddle

答案 3 :(得分:0)

由于您的帖子是纯JavaScript,我决定相应地回答。如上所述,您不应该检查" "的空字符串,而是检查''""。此外,您甚至不需要 ,因为您只需检查if (str) { // string exists }即可。对于您的name变量,您指的是HTML元素,而不是string值。所以,总而言之(一些错误),这里没有什么大不了的。

我已经抽象了一点这个过程,让您了解如何在没有大量重复代码的情况下验证许多相似字段。

注意:您应该找到用inline event handlers处理程序替换unobtrusive的方法。例如:

document.getElementById('someButton').onclick = Validate;

话虽如此,这里有一些建议:

var emptyString = function(str) {
    if (str) {
        return false;
    }
    return true;
};

var emptySelect = function(sel) {
    if (parseInt(sel) !== 0) {
        return false;
    }
    return true;
};


function Validate() {
    var name = document.getElementById("raju").value;
    var e = document.getElementById("ddlView");
    var strUser = e.options[e.selectedIndex].value;

    switch (true) {
        case (!emptySelect(strUser) && !emptyString(name)):
            alert('Either select a name or pick a name.');
            break;
        case (emptySelect(strUser) && emptyString(name)):
            alert('Please select a name or pick a name.');
            break;
        default:
            // Possibly some default validation
            alert('Thanks for picking a name');
            break;
    }
}