Javascript 限制用户输入重复的特定号码

Javascript 限制用户输入重复的特定号码,javascript,html,Javascript,Html,我有以下一组与一个问题相关的文本输入字段:- <input type="text" name="{{ $answer->id }}" value="" style="width:20px; text-align:center" maxlength="1" oninput="this.value=this.value.replace(/[^0-5]/g,'');" /> <input type="text" n

我有以下一组与一个问题相关的文本输入字段:-

    <input type="text" name="{{ $answer->id }}" value=""
           style="width:20px; text-align:center"
           maxlength="1" oninput="this.value=this.value.replace(/[^0-5]/g,'');"  />
     <input type="text" name="{{ $answer->id }}" value=""
           style="width:20px; text-align:center"
           maxlength="1" oninput="this.value=this.value.replace(/[^0-5]/g,'');"  />
     <input type="text" name="{{ $answer->id }}" value=""
           style="width:20px; text-align:center"
           maxlength="1" oninput="this.value=this.value.replace(/[^0-5]/g,'');"  />
     <input type="text" name="{{ $answer->id }}" value=""
           style="width:20px; text-align:center"
           maxlength="1" oninput="this.value=this.value.replace(/[^0-5]/g,'');"  />
<input type="text" name="{{ $answer->id }}" value=""
           style="width:20px; text-align:center"
           maxlength="1" oninput="this.value=this.value.replace(/[^0-5]/g,'');"  />
<input type="text" name="{{ $answer->id }}" value=""
           style="width:20px; text-align:center"
           maxlength="1" oninput="this.value=this.value.replace(/[^0-5]/g,'');"  />
<input type="text" name="{{ $answer->id }}" value=""
           style="width:20px; text-align:center"
           maxlength="1" oninput="this.value=this.value.replace(/[^0-5]/g,'');"  />
<input type="text" name="{{ $answer->id }}" value=""
           style="width:20px; text-align:center"
           maxlength="1" oninput="this.value=this.value.replace(/[^0-5]/g,'');"  />

您可以看到,我已经实现了一个限制,不允许输入大于5的整数

上面的文本输入是让用户通过输入1-5之间的数字对答案进行评分

我想要一个JavaScript代码,限制用户重复数字3的评级超过2次,数字2的评级不超过1次。

这将允许:

1.仅限数字1-5

2.值“2”最多出现1次

3.值“3”最多出现2次

希望这就是你想要的

var inputs=Array.from(document.querySelectorAll('input');
功能验证(el){
var valid=true;
如果(!/[1-5]/.测试(el.值))有效=错误;
if(el.value=='2'&&inputs.some(t=>t!==el&&t.value=='2'))valid=false;
如果(el.value=='3'&&inputs.REDUCT((a,b)=>a+(b.value=='3'?1:0),0)>=3)有效=false;
如果(!valid)el.value='';
}
标签{
显示:块;
}
q1
问题2
第三季度
第四季度
问题5
问题6
问题7

问题8
这是你要找的东西吗?在输入中使用oninput=“验证(此)”

function validate(elem) {
    elem.value=elem.value.replace(/[^0-5]/g,'');           

    var inputs = document.getElementsByTagName('input');
    for (var i = 0; i < inputs.length; i++) {
        if (inputs[i] == elem) continue;
        if (inputs[i].value == elem.value) count++;
    }
    switch(elem.value) {
        case '3':
        case 3: 
            if (count >= 2) {
                elem.value = '';
                return false;
            }
            break;
        case '2':
        case 2:
            if (count >= 1) {
                elem.value = '';
                return false;
            }
            break;
        default:
    }
    return true;
}
功能验证(elem){
元素值=元素值替换(/[^0-5]/g');
var inputs=document.getElementsByTagName('input');
对于(变量i=0;i=2){
元素值=“”;
返回false;
}
打破
案例“2”:
案例2:
如果(计数>=1){
元素值=“”;
返回false;
}
打破
违约:
}
返回true;
}

您已经设置了
maxlength=“1”
,因此用户无论如何都不能输入任何2位数字。您有8个输入,您希望用户如何给每个输入一个唯一的值0-5?请告诉我们您尝试了什么yourself@pala我不是说用长度限制用户,我想要的是,用户必须在不同选项之间进行评级,并且评级为1到5之间的值,我想限制用户对可用选项的评级(3)超过2次。@YosefTukachinsky我上面提到的问题是让用户对可用选项进行评级,而不是排序。我想要的是,用户必须在不同的选项之间进行评分,并且评分为1到5之间的值,我想限制用户对可用选项的评分(3)超过2次。我无法使用值(2),并且值3只允许使用一次,请确认。我可以看到它在您的代码片段示例中工作得很好,但当我在我的页面上使用上述代码时,它不是。请考虑我的页面包含许多其他的文本输入字段。是否有任何代码可以让代码仅在特定的开发标记下工作,例如
document.querySelectorAll(.related div input)
document.querySelectorAll(input[name=“inputs name”])
,如果它们都具有相同的名称(与代码中的外观相同)