javascript - 如何使用 JQuery 设置其他字段 oninput 的属性?

标签 javascript jquery html razor

我有三个输入,我试图让用户可以输入任意数量的输入,但至少输入一个,以便进行搜索。后端的构建是为了很好地从 URL 解析这些内容,但我在客户端遇到了麻烦。

现在,我正在使用 oninvalidoninput,如下所示:

<input type="text" id="Input1" name="Input1" required oninvalid=
"setCustomValidity('Please enter a valid Input1')" oninput="setCustomValidity('')"/>

我想要做的是,在这个包含 3 个输入的包中,将其他两个输入设置为不需要,并将 setCustomValidity 值设置为 >'' 当在其中一个字段中输入值时。我还希望它能够重新建立这些规则,例如,如果用户在输入错误的字段后改变了主意。

我现在拥有的 JQuery:

jQuery(function ($) {
            var $inputs = $("#Input1, #Input2, #Input3")
            $inputs.oninput = (function () {
                // Set the required property of the other input to false if this input is not empty.
                $inputs.not(this).prop('required', false)
                $inputs.not(this).prop("setCustomValidity", "")
            });
        });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<form action="" method="get">

<input type="text" id="Input1" name="Input1" required oninvalid="setCustomValidity('Please enter a valid Input1, 2, or 3')" oninput="setCustomValidity('')"/>

<input type="text" id="Input2" name="Input2" required oninvalid="setCustomValidity('Please enter a valid Input1, 2, or 3')" oninput="setCustomValidity('')"/>

<input type="text" id="Input3" name="Input3" required oninvalid="setCustomValidity('Please enter a valid Input1, 2, or 3')" oninput="setCustomValidity('')"/>

<input type="submit" value="Submit" />
</form>

一切似乎都在 Razor Pages 等中正确编译,没有错误,但所需的属性没有被删除或更改。如果有人能够深入了解我做错了什么,那就太好了;一般来说,我对 JS 和 JQuery 很陌生,但我可以看到它的强大功能。

最佳答案

setCustomValidity 不是属性或属性,而是从 oninvalid 属性调用的函数。所以应该是:

$inputs.not(this).removeAttr("oninvalid");

当您想重新建立它时,请使用:

$inputs.not(this).attr("oninvalid", "setCustomValidity('Please enter a valid Input1')");

但我不确定您是否需要这样做。一旦你不再需要它,它就永远不会触发“无效”事件。因此您根本不需要删除它。

您还可以使用 jQuery 事件监听器来执行此操作。添加处理程序:

$elements.on("invalid", function() {
    this.setCustomValidity("Please enter a valid input");
}

删除它:

$elements.off("invalid");

您在 $this 的赋值中也有一个拼写错误。应该是:

var $inputs = $("#Input1, #Input2, #Input3");

并且没有 jQuery .oninput() 方法。所以应该是:

$inputs.on("input", function() {
    ...
});

关于javascript - 如何使用 JQuery 设置其他字段 oninput 的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51754185/

相关文章:

php - 识别已提交的表单的最佳方法是什么?

css - 我的 div 布局有什么问题?

php - 从jquery文件在php中分配全局变量的值

javascript - 使用 jQuery,如何获取 URL 的文件部分?

java - 为什么 AJAX 调用成功后 servlet 不转发?

javascript - 在各种浏览器中测试 jQuery 插件

html - 使用 CSS 创建橱柜

javascript - react 选择: How to rotate dropdown indicator when menu open

javascript - PHP 主机未从 header 接收 Websocket key

javascript - Couchdb 对带有字符串的大型文档的 View 作为键超时