0

ドロップダウンリストの代わりにコードでajaxコンボボックスを使用していますが、クライアント側で検証したいと思います。私はjavascriptを使用し、次のコードを使用して検証することを選択します。

function validateCombobox(){
    var comboboxId = document.getElementById('<%=ComboBox1.ClientID%>');
    if(comboboxId.value=="some value") {
        alert("Error");
    }
}

しかし、コンボボックスを検証できません。

私のHTMLコードは次のとおりです。

<asp:ComboBox ID="ComboBox1" runat="server"
    AutoCompleteMode="Suggest" 
    CaseSensitive="false" 
    DropDownStyle="DropDownList">
</asp:ComboBox>

ブラウザでASPによって生成されたコード:

<div onchange="javascript:setTimeout('__doPostBack(\'ctl00$ctl00$ContentPlaceHolder$ContentPlaceHolder1$unit\',\'\')', 0)"
    id="ctl00_ctl00_ContentPlaceHolder_ContentPlaceHolder1_unit" style="display:inline;">
    <table id="ctl00_ctl00_ContentPlaceHolder_ContentPlaceHolder1_unit_unit_Table"
      class="ajax__combobox_inputcontainer" cellspacing="0" cellpadding="0" border="0"
      style=
      "border-width:0px;border-style:None;border-collapse:collapse;display:inline;position:relative;top:5px;">
        <tr>
            <td class="ajax__combobox_textboxcontainer">
                <input type="text" autocomplete="off" style="width:150px;"
                    name="ctl00$ctl00$ContentPlaceHolder$ContentPlaceHolder1$unit$unit_TextBox"                    
                    id="ctl00_ctl00_ContentPlaceHolder_ContentPlaceHolder1_unit_unit_TextBox" />
            </td>
            <td class="ajax__combobox_buttoncontainer">
                <button type="button" 
                    id="ctl00_ctl00_ContentPlaceHolder_ContentPlaceHolder1_unit_unit_Button">
                </button>
            </td>
        </tr>
    </table>
    <ul id="ctl00_ctl00_ContentPlaceHolder_ContentPlaceHolder1_unit_unit_OptionList"
      class="ajax__combobox_itemlist" style="display:none;visibility:hidden;">
        <li>GM</li>
        <li>KG</li>
    </ul>
    <input type="hidden"  value="0" 
        name="ctl00$ctl00$ContentPlaceHolder$ContentPlaceHolder1$unit$unit_HiddenField"\
        id="ctl00_ctl00_ContentPlaceHolder_ContentPlaceHolder1_unit_unit_HiddenField"/>
</div>
4

3 に答える 3

2

@Sethu と @Scott からの回答の助けを借りて解決策を得ました。

次のコードを使用します。

function validateCombobox(){
    var comboBox = document.getElementById('<%=ComboBox1.ClientID%>_ComboBox1_TextBox');
    if(comboBox.value=="some value")
    {
        alert("Error");
    }
}
于 2012-08-31T10:30:19.373 に答える
0

これを試して。

function validateCombobox(){
    var comboboxObject = document.getElementById('<%=ComboBox1.ClientID%>');
    var inputs = comboboxObject.getElementsByTagName('input');
    for (i = 0; i < inputs.length; i++) {
        if (inputs[i].type == 'text' && inputs[i].value == "some value") {
            alert("Error");
            break; //why loop further?
        }
    }
}
于 2012-08-31T15:59:37.730 に答える
0

コンボ ボックスは、クライアント側で複数の html を作成します。

元々、値は隠しフィールドに格納されています。

function validateCombobox()
{
var comboCotainer= document.getElementById('<%=ComboBox1.ClientID%>');
var hdnField = FindChild(comboCotainer);
if(hdnField != null && hdnField.value == "-1")
{
 alert("Error");
}
}

function FindChild(container) {
        var hiddenControl = null;
        if (container.children && container.children.length > 0) {
            for (var i = 0; i < container.children.length; i++) {
                if (container.children[i].type == "hidden") {
                    hiddenControl = container.children[i];
                    break;
                 }
            }
        }

        return hiddenControl;
    }

jqueryのビットはFindChild関数を排除します

Jqueryを使用する場合は、以下のコードを使用してください

function validateCombobox() {
        var selectedVal = $('#<%=ComboBox1.ClientID%> input[type=hidden]').val();
        if (selectedVal == "-1") {
            alert("Error");
        }
    }

非表示のコントロールは選択した項目のインデックスを保持するため、-1 または負でない値を確認してください

于 2012-08-31T08:34:59.990 に答える