#javascript #php #forms #validation #input
#javascript #php #формы #проверка #ввод
Вопрос:
Я просто выкладываю это, чтобы посмотреть, сможет ли кто-нибудь уловить мой дрейф и помочь.. Я работаю в публичной библиотеке и нахожусь в процессе создания машины для самостоятельной проверки. Вот некоторый код из него — есть форма под названием «проверка» с вводом под названием «штрих-код» — результат «штрих-код» отправляется в файл php, который отправляет данные в библиотечную систему и получает сообщение, которое затем передается в таблицу «завершено-проверки».
Все работает нормально, но мне нужно поставить некоторые условия в отношении того, какие данные принимаются из формы.. Условия таковы, что первые два символа должны быть t00 .
Я искал в Интернете и пытался заимствовать / адаптировать код у других, чтобы заставить это работать, откуда я это взял;
<script type="text/javascript">
function checkCode() {
var form = document.getElementById('checkin');
var x = form.elements.barcode.value.substring(0, 2);
// var x = this.value.substring(0, 2);
if (x == 't00') document.getElementById('#barcode').style.display = 'none';
}
</script>
Я не настоящий программист, но мне интересно, может ли кто-нибудь понять, как я мог бы заставить это работать? (на данный момент этого не происходит).
Большое спасибо за просмотр,
Иордания.
И вот html со всеми сценариями;
<body OnLoad="$('#barcode').focus();" style="padding:40px;">
<center>
<p>
<img src="selfchecklogo.png" />
</p>
<div class="formbarwrapper">
<div class="formbar">
<form method="post" name="checkin" id="checkin" onsubmit="return checkCode()" />
<input name="barcode" id="barcode" placeholder="scan an item..." autocomplete="off" maxlength="9" />
</form>
</div>
</div>
<div class="result">
<table id="completed-checkins">
<tbody>
<tr>
<td id="cell"></td>
</tr>
</tbody>
</table>
</div>
</center>
</body>
<script type="text/javascript">
function checkCode() {
var form = document.getElementById('checkin');
var x = form.elements.barcode.value.substring(0, 2);
// var x = this.value.substring(0, 2);
if (x == 't00') document.getElementById('#barcode').style.display = 'none';
}
</script>
<script type="text/javascript">
$(document).ready(function() {
$('#checkin').submit(function() {
$.post("index.php", {
barcode: $('#barcode').val()
},
function(data) {
var content = '';
content = '<div class="result">';
content = '<tbody>';
content = '<tr>';
content = '<td>' data '</td>';
content = '</tr>';
content = '</tbody>';
content = '</div>';
$('#barcode').val('').focus();
$('#completed-checkins tbody').html(content);
});
return false;
});
});
</script>
</html>
Ответ №1:
Вы пробовали печатать «x» на консоли? Я думаю, ваша проблема в том, что эта строка
var x = form.elements.barcode.value.substring(0, 2);
выбирает только первые два символа из строки, а затем вы сравниваете его с «t00», который имеет длину в три символа и, следовательно, всегда будет иметь значение false.
Кроме того, вы можете рассмотреть возможность использования оператора «===» вместо оператора «==». В этом случае оба будут работать, но использование «===» — хорошая привычка. «===» работает так, как вы ожидаете, тогда как «==» имеет некоторые небольшие ошибки в Javascript. Например
0 == '0' //This evaluates to true
0 === '0' //This evaluates to false
В принципе, «==» не проверяет тип, а «===» проверяет.
Комментарии:
1. @user3758568 Это ответило на ваш вопрос?