gpt4 book ai didi

javascript - 如何防止用户在html中提交虚假的datalist值?

转载 作者:行者123 更新时间:2023-11-28 02:26:35 24 4
gpt4 key购买 nike

我有数据列表的代码:

$('input[list]').on('input', function(e) {
var $input = $(e.target),
$options = $('#' + $input.attr('list') + ' option'),
$hiddenInput = $('#' + $input.attr('id') + '-hidden'),
label = $input.val();

$hiddenInput.val(label);

for (var i = 0; i < $options.length; i++) {
var $option = $options.eq(i);

if ($option.text() === label) {
$hiddenInput.val($option.attr('data-value'));
break;
}
}
});

// For debugging purposes
$("#myForm").on('submit', function(e) {
$('#result').html($('#answer-hidden').val());
e.preventDefault();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<form id="myForm">
<input list="answers" id="answer">
<datalist id="answers">
<option data-value="42">The answer</option>
<option data-value="1337">Elite</option>
<option data-value="69">Dirty</option>
<option data-value="3">Pi</option>
</datalist>
<input type="hidden" name="answer" id="answer-hidden">
<input type="submit">
</form>




<p>Submitted value (for debugging):</p>
<pre id="result"></pre>

我搜索 Elite 作为 El 并选择选项 Elite 然后按 submit 按钮,结果是1337

但是,当我搜索 Elite 作为 El 并按提交 按钮时(没有选择选项 Elite 或任何其他...),结果是 El不好

How to prevent users from submitting false value?

最佳答案

正如 @ecg8 提到的,您应该在下拉列表中有一个事件监听器,并且只有在选择了有效值时才启用提交按钮。这对你有用:

var validValues = [42, 1337, 69, 3];
$("#answer").on("change", function() {
var validValueSelected = validValues.some(x => x == $('#answer-hidden').val());
document.getElementById("submitButton").disabled = !validValueSelected;
});

并将您的提交按钮更改为:

<input id="submitButton" disabled type="submit">

尽管如此,我不建议将您的数据值硬编码到 html 中,然后将它们复制到 javascript 文件中(即变量 validValues)。我建议使用类似 KnockOut 的库这可以帮助你。

关于javascript - 如何防止用户在html中提交虚假的datalist值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53618178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com