0

当下拉列表数据更改时,我对如何更改 CheckBox 的输入类有疑问。

这是我的 html 标记:

           <p>
            <label for="ddlContType">
                Contact Type</label>
            <span>
                @Html.DropDownList("ddlContType", new SelectList(ViewBag.ContTypeList, "ID", "Display_Value",ContType), "[Please Select]",
            new Dictionary<string, object>
            {
                {"class","validate[required] inputLong"}
            })
            </span>
        </p>
        <p>
            <label for="txtContValue">
                Contact Value</label>
            <span>
                <input type="text" id="txtContValue" name="txtContValue" class="validate[required] inputLong"
                    value="" />`

因为我用过jquery的validate

我的 DropDownList 上有电子邮件和电话号码

我想验证当我在下拉列表中选择电子邮件时,它将允许电子邮件格式文本框,当我在下拉列表中选择电话号码时。

它只允许电话格式这是我正在使用的类

class="validate[required,custom[email]]

class="validate[required,custom[phone]]
4

2 回答 2

2

如果您想在下拉列表更改时更改一个类,那么只需为“更改”事件添加一个侦听器。处理程序应根据需要更新类:

$("#ddlContType").on("change", function(ddl) {
    var textEl = $("txtContValue");
    if ($(ddl).val() == "Email") {
        txtEl.attr("class", "validate[required,custom[email]]");
    } else {
        txtEl.attr("class", "validate[required,custom[phone]]");
    }
});
于 2013-07-15T02:26:34.810 回答
1

我不确定您的下拉列表的输出是什么样的。让我假设它看起来像这样:

<select id="ddlContType" name="ddlContType">
     <option value="">-- Select --</option>
     <option value="1">E-mail</option>
     <option value="2">Phone Number</option>
</select>

为了能够检测到更改,您需要为下拉选择的更改添加侦听器。我使用jQuery它是因为我熟悉它。你可以使用任何你觉得熟悉的 JavaScript 框架(或者只是简单的 JavaScript)。

$(document).ready(function () {
     $('#ddlContType').change(function () {
          // This will bring back either a 1 or a 2
          var commType = $('#ddlContType').val();
          // Just to confirm
          alert('commType = ' + commType);

          // Get a reference to the textbox
          var txtContValue = $('txtContValue');

          if (commType == '1') {
               txtContValue.attr('class', 'validate[required,custom[email]]');
          }
          else if (commType == '2') {
               txtContValue.attr('class', 'validate[required,custom[phone]]');
          }
     });
});

老实说,我从未见过这样的事情:

class="validate[required,custom[email]]

玩弄我的代码,看看什么对你有用。jQuery API 网站上有很多示例。

于 2013-07-15T06:57:33.330 回答