Javascript 如何使用JQuery在输入的其他字段上设置属性?

Javascript 如何使用JQuery在输入的其他字段上设置属性?,javascript,jquery,html,razor,Javascript,Jquery,Html,Razor,我有三个输入,我正在尝试这样做,用户可以输入任意数量的输入,但至少一个,以便进行搜索。后端是用来处理从URL解析这些内容的,但是我在客户端遇到了问题 现在,我正在使用oninvalid和oninput如下所示: <input type="text" id="Input1" name="Input1" required oninvalid= "setCustomValidity('Please enter a valid Input1')" oninput="setCustomValidit

我有三个输入,我正在尝试这样做,用户可以输入任意数量的输入,但至少一个,以便进行搜索。后端是用来处理从URL解析这些内容的,但是我在客户端遇到了问题

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

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

setCustomValidity
不是属性或属性,而是从
oninvalid
属性调用的函数。因此,它应该是:

$inputs.not(this).removeAttr("oninvalid");
var $inputs = $("#Input1, #Input2, #Input3");
$inputs.on("input", function() {
    ...
});
如果要重新建立,请使用:

$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
的赋值中也有输入错误。应该是:

$inputs.not(this).removeAttr("oninvalid");
var $inputs = $("#Input1, #Input2, #Input3");
$inputs.on("input", function() {
    ...
});
而且没有jQuery
.oninput()
方法。因此,它应该是:

$inputs.not(this).removeAttr("oninvalid");
var $inputs = $("#Input1, #Input2, #Input3");
$inputs.on("input", function() {
    ...
});

你能检查一下是否有一个有效的输入并使用它吗?如果(!$(“#input1”).val()&&(!$(“#input2”).val()&&(!$(“#input3”).val()){//显示警告}否则{//获取有效输入并执行您的操作}我非常确定
必需的
属性没有键/值对。要么是必需的,要么不是。因此,将您的
prop('required',false)
更改为
removeAttr('required')
。我还要确保这些输入确实在变化。检查检查器,看看它们是否确实发生了更改。@MPaul很遗憾,它们在使用当前代码进行更改,但我将尝试更改所需的属性代码,看看这是否有影响。我确实更改了它,但输入似乎没有更改,我没有从chrome调试器触发任何类型的错误或控制台输出。你好,Barmar,我实际上在你回答后不久编辑了这个问题,我道歉。我添加了
如果用户在输入错误的字段后改变了主意,我也希望它重新建立这些规则。
这个实现将永久删除这些规则,不是吗+1用于观察属性。使用
.attr(“oninvalid”、“setCustomValidity('Whatever')”
将其添加回去。听起来不错。然而,我目前仍然无法移除所需的属性;属性似乎没有随着.prop或.removeAttr的变化而变化,也没有控制台输出。我不知道为什么这样不起作用。我有自己的应用程序,可以动态更改
required
属性,并且运行良好。
var$inputs=(“#Input1,#Input2,#Input3”)
缺少对
$()
函数的调用,它应该是:
var$inputs=$(“#Input1,#Input2,#Input3”)