填写1个输入字段时,禁用所有其他输入字段不起作用

时间:2018-04-03 15:13:35

标签: jquery asp.net textbox readonly input-field

我有3个输入文本字段,但只要填写第一个文本字段,就应禁用其他2个输入字段。我试图这样做,如下所示,禁用2输入字段工作正常,但当我删除我的输入时,他们保持禁用状态,他们不会得到readonly = false。有什么解决方案吗?在ASP.net中使用Jquery!

FRONTEND:

<p><asp:TextBox ID="txtTitle" runat="server" CssClass="texter" placeholder="<%$ Resources:GlobalResource, title%>"  ></asp:TextBox></p>
<p><asp:TextBox ID="txtStatus" runat="server" CssClass="texter" placeholder="<%$ Resources:GlobalResource, status%>"  ></asp:TextBox></p>
<p><asp:TextBox ID="txtMessageId" runat="server" CssClass="texter" placeholder="<%$ Resources:GlobalResource, messageid%>" ></asp:TextBox></p>

JQUERY:

$("#ctl00_ContentPlaceHolder1_txtTitle").change(function () {
        if (!$("#ctl00_ContentPlaceHolder1_txtTitle").value != ''){
            $("#ctl00_ContentPlaceHolder1_txtStatus").prop("readonly", true);
            $("#ctl00_ContentPlaceHolder1_txtMessageId").prop("readonly", true);
        }
        else {
            $("#ctl00_ContentPlaceHolder1_txtStatus").prop("readonly", false);
            $("#ctl00_ContentPlaceHolder1_txtMessageId").prop("readonly", false);
        }
    });

3 个答案:

答案 0 :(得分:0)

我相信如果您使用keyup事件而不是更改事件将会有效。例如,我会在下拉列表中使用更改。

$("#ctl00_ContentPlaceHolder1_txtTitle").keyup(function () {
    if ($(this).value != ''){
        $("#ctl00_ContentPlaceHolder1_txtStatus").prop("readonly", true);
        $("#ctl00_ContentPlaceHolder1_txtMessageId").prop("readonly", true);
    }
    else {
        $("#ctl00_ContentPlaceHolder1_txtStatus").prop("readonly", false);
        $("#ctl00_ContentPlaceHolder1_txtMessageId").prop("readonly", false);
    }
});

http://api.jquery.com/keyup/

答案 1 :(得分:0)

夫妻俩:

  1. 也许您应该使用'input',因此更改会立即生效,而不是在当前文本框失去焦点后,或者这可能是您的目标。
  2. 使用jQuery,使用.val()代替.value
  3. !不知道为了什么。
  4. 仅为了提高效果,请使用$(this)而不是使用$("#ctl00_ContentPlaceHolder1_txtTitle")重新查询
  5. 正如您所看到的,我在片段中包含了三个通用的input,我希望其中的要点是

    让我知道

    &#13;
    &#13;
    $("#ctl00_ContentPlaceHolder1_txtTitle").on('input', function () {
            if ($(this).val() != ''){
                $("#ctl00_ContentPlaceHolder1_txtStatus").prop("readonly", true);
                $("#ctl00_ContentPlaceHolder1_txtMessageId").prop("readonly", true);
            }
            else {
                $("#ctl00_ContentPlaceHolder1_txtStatus").prop("readonly", false);
                $("#ctl00_ContentPlaceHolder1_txtMessageId").prop("readonly", false);
            }
        });
    &#13;
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <input id="ctl00_ContentPlaceHolder1_txtTitle"/>
    <input id="ctl00_ContentPlaceHolder1_txtStatus"/>
    <input id="ctl00_ContentPlaceHolder1_txtMessageId"/>
    &#13;
    &#13;
    &#13;

答案 2 :(得分:0)

修正了它!

我使用 keyup 代替 onchange AND length&gt; 0 而不是!=&#39;&#39;

$("#ctl00_ContentPlaceHolder1_txtTitle").keyup(function () {
    if ($(this).val().length > 0 ) {
        $("#ctl00_ContentPlaceHolder1_txtStatus").prop("readonly", true);
        $("#ctl00_ContentPlaceHolder1_txtMessageId").prop("readonly", true);
    }
    else {
        $("#ctl00_ContentPlaceHolder1_txtStatus").prop("readonly", false);
        $("#ctl00_ContentPlaceHolder1_txtMessageId").prop("readonly", false);
    }
});