如何验证文本框中的输入是否遵循某种格式

时间:2013-09-13 17:41:54

标签: javascript jquery html regex validation

我正在尝试编写一个页面来查找我们系统中的票证。所有门票均采用以下格式(6位数字,短划线,后跟6位数字):

123456-789123 

我创建了一个HTML表单来请求并将用户重定向到结果:

<section class="is-search">
  <form method="get" action="http://mytesturl.com/tickets/lookup/info.php">
    <input type="text" class="text" name="ticket" placeholder="Search by Ticket #" />
  </form>
</section>

目前,如果有人输入&#34; potato&#34;,表单将提交并抛出多个错误,因为API显然无法搜索&#34; potato&#34;或其他任何不遵循票证格式的内容。

我已经看到了一些关于使用JavaScript的建议,但是,我无法让我的语法格式正确,并且很奇怪是否有更好的方法在PHP中执行此操作因为我不熟悉JS 。

在提交API之前,验证输入是否遵循此格式的最佳方法是什么?

5 个答案:

答案 0 :(得分:1)

您是否尝试过使用正则表达式(正则表达式)。 这可能会有所帮助......

http://php.net/manual/en/function.preg-match.php

答案 1 :(得分:0)

    <input type="text" class="text" name="ticket" placeholder="Search by Ticket #" onchange="myFunction()" />

myFunction(){
    var value = $(".text").val();
    if (/([0-9]{6}\-[0-9]{6})/.test(value)) {
         $("input[type=submit]").removeAttr("disabled");
    } else {
         $("input[type=submit]").attr("disabled", "disabled");
    }
}

<?php

if (preg_match('/([0-9]{6}\-[0-9]{6})/', &_POST['ticket'])) {
//execute code
}

答案 2 :(得分:0)

正则表达式应该适用于javascript和PHP,例如:

$('.text').on('change', function() {
    if (this.value.match(/^[0-9]{6}\-[0-9]{6}$/)) {
        alert('ok');
    }else{
        alert('not valid');
    }
});

FIDDLE

正如Jason在评论中所指出的,javascript验证仅为方便起见,并且应在服务器端再次验证任何用户输入。

修改

如果由于某种原因你也需要验证部分?

$('.is-search form').on('submit', function(e) {
    e.preventDefault();
    if ($('.text', this).val().match(/^[0-9]{6}\-[0-9]{6}$/)) {
        this.submit();
    }else{
        alert('not a valid ticket number')
    }
});

FIDDLE

答案 3 :(得分:0)

使用正则表达式在提交表单之前检查格式

//on click, when the form is about to be submitted
$("#submit").click(function (e){
    //prevent the submission unlit we check for valid format
    e.preventDefault();
    //check for valid format using regular expression test
    if(/([0-9]{6}\-[0-9]{6})/.test($("input[name=ticket]").val())){
        //submit
        $("#search-form").submit();
    }
    else{
        //display error
        alert("error");
        $("input[name=ticket]").val("");
    }
});

这里是EXAMPLE

答案 4 :(得分:0)

您可以先将HTML属性pattern="\d{6}\-\d{6}添加到input标记中。然后考虑添加JavaScript检查,以涵盖不支持pattern但启用了JavaScript的浏览器。