簡體   English   中英

Java腳本/ Jquery驗證問題?

[英]Issue with Java script / Jquery validation?

我有一個選擇框和一個文本框。 我需要進行驗證,例如是否都選擇了我需要“選擇名稱或選擇名稱”之類的警報,如果我沒有選擇兩者,則需要“請選擇名稱或選擇名稱”之類的警報,如果我選擇一個我需要提醒他們,例如“感謝您選擇姓名”。 我是用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>

您的問題是您得到輸入,而不是價值。

替換var name = document.getElementById(“ raju”); var name = document.getElementById(“ raju”)。value;

此外,您將名稱與null和空格進行比較。 您必須將其與空字符串進行比較。 (名稱=='')

當您在我的Jsfiddle代碼上看到時,我沒有使用oonclick屬性,而是在javascript上使用了事件監聽器(對於HTML來說確實更好)。

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

一秒鍾后您忘記了獲取名稱輸入的.value(因此已經返回[HTML DOM object]而不是null或值)。

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

正如您提到的,這是使用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");
    }
}

小提琴

由於您的帖子使用的是純JavaScript,因此我決定相應地回答。 如前所述,你不應該選擇一個空字符串" " ,而是''"" 此外,你甚至不應該需要做 ,因為你可以簡單的檢查if (str) { // string exists } 對於您的name變量,您指的是HTML元素,而不是string值。 因此,總的來說(有一些錯誤),這里沒有什么大不了的。

我已經對該過程進行了一點抽象,以使您了解如何在沒有大量重復代碼的情況下驗證許多相似的字段。

注意:您應該找到一種方法,用unobtrusive處理程序替換inline event handlers程序。 例:

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;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM