我希望一个友好的灵魂可以帮助我解决我的JavaScript问题。
我正在尝试学习一些关于javascript和编码的一般情况,这样做我正在尝试制作我自己的内部拍卖系统,并且这样做我不希望人们能够对产品进行出价。相同或更低,所以要做到这一点我想禁用提交按钮等。
我的问题是我开始使用ID并且了解到如果我有多个具有相同ID的元素,这将无法工作,所以我开始使用类来代替。
我做了以下似乎没有工作的原因,它不会比较两个数字:(
var inputOne = document.getElementsByClassName('form-control new_bid');
var inputTwo = document.getElementsByClassName('form-control old_bid');
setInterval(function() {
if (inputOne >= inputTwo)
$(":submit").removeAttr("disabled");
else
$(":submit").attr("disabled", "disabled");
}, 1);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" class='form-control old_bid' id="current_bid" name="current_bid" readonly>
<input type='text' class='form-control new_bid' id='place_bid' name='place_bid' placeholder='The bid you make are in ".getUser(false)->getOffice()->getRegion()->getCurrency()."' pattern='^[0-9]*$'>
<input id="submit_bid" type="submit" name="submit_bid" class="btn btn-primary" value="Place bid" />
提前致谢!
首先,你不想使用setInterval
!你想使用EventListener,在这种情况下,keyup
event是一个很好的。
然后你可以使用querySelector,所以你不需要jQuery来使用$('.class-selector')
正如其他人已经指出的那样,你需要使用element.value
来获得所需元素的值。
然后你需要使用parseInt来获取从字符串到数字的输入值来进行数字比较。
(注意我已经删除了.new_bid上的readonly,因此您可以使用该代码段)
(function(){
var inputOne = document.querySelector('.new_bid');
var inputTwo = document.querySelector('.old_bid');
var submitButton = document.querySelector('#submit_bid');
var myValuesChanged = function() {
if (parseInt(inputOne.value, 10) >= parseInt(inputTwo.value, 10)) {
submitButton.disabled = false;
} else {
submitButton.disabled = true;
}
console.log('submitButton disabled: ' + submitButton.disabled);
}
inputOne.addEventListener("keyup", myValuesChanged, false);
inputTwo.addEventListener("keyup", myValuesChanged, false);
})();
<input type="text" class='form-control old_bid' id="current_bid" name="current_bid">
<input type='text' class='form-control new_bid' id='place_bid' name='place_bid' placeholder='The bid you make are in ".getUser(false)->getOffice()->getRegion()->getCurrency()."' pattern='^[0-9]*$'>
<input id="submit_bid" type="submit" name="submit_bid" class="btn btn-primary" value="Place bid" />
您需要选择正在使用的输入,并将其值解析为整数。另外,稍微改变最后一位:
var inputOne = parseInt(document.getElementsByClassName('form-control new_bid')[0].value);
var inputTwo = parseInt(document.getElementsByClassName('form-control old_bid')[0].value);
setInterval(function () {
if (inputOne >= inputTwo)
$("#submit-bid").removeAttr("disabled");
else
$("submit-bid").attr("disabled", "disabled");
}, 1000);
虽然既然你已经在使用jQuery而且你有ID,那么就这样做:
var inputOne = parseInt($("#current_bid").val()),
inputTwo = parseInt($("#place_bid").val());
setInterval(function () {
if (inputOne >= inputTwo)
$("#submit-bid").removeAttr("disabled");
else
$("submit-bid").attr("disabled", "disabled");
}, 1000);
您需要使用inputOne.value
来获取输入字段的当前值!
祝你好运学习如何编码:D
你可以使用.value
var inputOne = document.getElementsByClassName('form-control new_bid')[0].value;
var inputTwo = document.getElementsByClassName('form-control old_bid')[0].value;
setInterval(function() {
if (inputOne >= inputTwo)
$(":submit").removeAttr("disabled");
else
$(":submit").attr("disabled", "disabled");
}, 1);