将输入值与数据库coldfusion中的值进行比较

时间:2016-03-16 00:36:30

标签: javascript jquery html coldfusion

我的表单上有5个文本框(cfinput)来输入组织代码。我想要做的是,当用户键入组织代码时,应该有一个onkeyup函数,它将使用数据库中的所有值验证该值,如果它无效,它应该显示"无效代码。 " 我在一个名为OrgIndexArray的数组中得到了所有组织代码。我没有得到,我将如何为所有5个文本框(某种cfloop执行此操作?)

<cfquery name="getOrgCodes" datasource="#sqlDS#">
    select distinct OrgCode From #SAUserIndex#
</cfquery>

<cfset IndexCodesList = ValueList(getOrgCodes.OrgCode)>
<cfset IndexCodesArray = #ListToArray(IndexCodesList)#>

<script>
    var IndexArray=<cfoutput>#SerializeJSON(getOrgCodes,true)# </cfoutput>
    $(document).ready(fucntion() {
        $('.IndexCodes').on('keyup',function(){
           if(!!~jQuery.inArray($this.val(),IndexArray)) {
               document.getElementById("message").innerHTML="Invalid Index";
           }
        });
    });
</script>

1 个答案:

答案 0 :(得分:1)

目前的问题是你的所有&#34;验证&#34;数据仅在服务器端可用。理想情况下,您希望在表单字段上使用javascript作为用户类型进行验证。通过这种方式,您可以执行验证客户端,而无需对服务器进行其他调用。

实现目标的方法很少:

一种(可能有点hacky)方法是使用Coldfusion填充页面中的javascript数组:

   // add class="catbutton" to buttons; you can rename the class
   $(".catbutton").click(function(e){
       e.preventDefault();
       $("body").toggleClass("noscroll");
       var name = $(this).attr("id");
       $.ajax({
            context: $('#lightbox-holder'),
            type: 'POST',
            dataType : "html",
            url : "/template/"+name+"-lightbox.html",
            success : function(results) {
                setTimeout(function() {
                    $('#lightbox-holder').html(results);
                    $('section#lightbox').addClass("open");
                },100);
                setTimeout(function() {
                    $('a.xbutton').addClass("open");
                },300);
            }
        });     
    });

或者你可以创建一个类别的API,这样你就可以对coldfusion <script> var myArray = <cfoutput>#serializeJson(OrgIndexArray)#</cfoutput>; //use javascript to validate the input by checking the cfinput value with the array. //assuming you have jquery: $(document).ready(function(){ $('.classOfYourInputHere').on('keyup',function(){ if ($.inArray( $this.val(), arr )) { //do something } }); }); </script> 做一个ajax请求,以便在javascript中检索数组数据,然后你会继续上面的步骤。

请注意,无论如何这都是未经过测试,但希望能帮助您朝着正确的方向前进。