0

このテキストボックスは、ユーザーコントロールにあるグリッドビュー内にあります。以下のjQueryコードを使用して、テキストボックスが空かどうかを確認しようとしています。

$(document).ready(function () {//when Dom is ready to be used
   $('input[type=submit]').click(function () {
    CheckIfCheckBoxIsChecked(this); //Use the clicked button to proceed
   });
 });

function CheckIfCheckBoxIsChecked(e) {
   var $id = $(e).prop('id'); //get the id of the clicked button
   var $gvid = "";

//Set the name of the gridview
if ($id.indexOf('IT') != -1) {
    $gvid = "contentMain_cklistIT_gvCKList";
}
else if ($id.indexOf('HR') != -1) {
    $gvid = "contentMain_cklistHR_gvCKList";
}
else if ($id.indexOf('Marketing') != -1) {
    $gvid = "contentMain_cklistMarketing_gvCKList";
}
else if ($id.indexOf('Payroll') != -1) {
    $gvid = "contentMain_cklistPayroll_gvCKList";
}
else if ($id.indexOf('Property') != -1) {
    $gvid = "contentMain_cklistProperty_gvCKList";
}

var $AllHM = $('#' + $gvid + ' input[id*="ckHMreq"]:checkbox:checked'); //select only checked checkboxes that have ckHMreq as part of their name 
var n = $AllHM.length;
if (n == 0) {//If there's none, telle the user
    alert('Please check at least one row to proceed');
}
else {//If there's at least one
    $.each($AllHM, function () {//Loop through each of them
        cid = $(this).prop('id');
        var nrow = cid.match('\\d+'); //find the row number

        var ckDpt = $('#' + $gvid + ' input[id*="ckDpt_' + nrow + '"]:checkbox'); //select the appropriate checkbox
        if ($(ckDpt).prop('checked') == true) {// if the checkbox is selected
            var a = $('#contentMain_cklistHR_gvCKList_txtCompletedBy_' + nrow);
            if (a.val() == "") {
                alert('Please enter your name to proceed');
                //more to come...
            }
        }
    });        
}

}

問題は、何かを入力しても、アラートメッセージボックスがポップアップすることです。アラートがポップアップしないのは、テキストボックスにサーバーからのテキストが表示されたとき(つまり、ページが読み込まれたとき)だけです。

その理由はありますか?

編集

このHTMLはブラウザからのものです:

<input name="_ctl0:contentMain:cklistIT:gvCKList:_ctl2:txtCompletedBy" type="text" id="contentMain_cklistIT_gvCKList_txtCompletedBy_0" />

最後の文字が0、1、..から5であることを除いて、これらはすべて同じです。

4

1 に答える 1

2

実際のテキストボックスのisは、jQueryが検索に使用している値と一致しません。

実際のテキストボックスのIDは次のとおりです。

id="contentMain_cklistIT_gvCKList_txtCompletedBy_0"

ただし、チェックされるIDは次のとおりです。

'#contentMain_cklistHR_gvCKList_txtCompletedBy_' + nrow

(chklistの部分は異なります。1つはHR、もう1つはITです)。

于 2013-01-30T17:42:10.350 に答える