Требовать определенные первые символы из сообщения формы

#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 Это ответило на ваш вопрос?