2015-09-27 42 views
0

我试图做的是使用Google可视化API来查询电子表格并将返回的正则表达式返回到名为terms_out的输入字段。然后我会喜欢Jquery使用这个返回的正则表达式值来验证我的表单。使用Google Visualization API调用RegEx以用于Jquery验证

使用以下代码,我只能在HTML中定义值terms_out时验证我的表单。防爆。 value="^[0-9]+$"

<input id="terms_out" class="terms_out" name="terms_out" value="^[0-9]+$"/> 
    <form id="Form"> 
    <input id='summary' name="summary" value=""/> 
    <input type="submit" value="Go"/> 
    </form> 

<script> 
$(function() { 
$.validator.addMethod("regex", function(value, element, RegEx) {return RegEx.test(value); }, "Not Valid!");  

$("#Form").validate({ 
    rules: { 
     summary: { 
      required: true, 
      regex: new RegExp($("#terms_out").val()) 
     } 
    } 
}); 
}); 
</script> 

如果输入字段terms_out值为undefined value=""形式确认后点击,只要东西键入到summary现场提交。

我试图使用一个名为keyterms的变量来存储被调用的值terms_out,但我似乎无法弄清楚如何使这项工作......或者如果我甚至在正确的机架上。

这里有我想要的HTML ...

<input id="terms_out" class="terms_out" name="terms_out" value=""/> 
<form id="Form"> 
<input id='summary' name="summary" value=""/> 
<input type="submit" value="Go"/> 
</form> 

而这里的全JS ...

/*Google Visualization api */ 
google.load('visualization', '1', {'packages':['corechart']}); 
google.setOnLoadCallback(GetTerms); 

function GetTerms() { 
var queryTerms = new 
google.visualization.Query('https://docs.google.com/spreadsheet/ccc?key=1OE_9A-oeboj2XxAGDoz5o3q4vbGUDy4bDVajBFG1l1U&sheet=WR4'); 

queryTerms.send(handleQueryTermsResponse); 
} 

function handleQueryTermsResponse(response) { 
     if (response.isError()) { 
      alert('Error in ID Validation Query: ' + response.getMessage() + ' ' + response.getDetailedMessage()); 
      return; 
     } 

var datatable2 = response.getDataTable(); 
var terms = datatable2.getValue(1,7);  
    document.getElementById('terms_out').value = terms; 

    } 

/*Jquery Validator */ 
$(document).ready(function() { 
$.validator.addMethod('regex', function(value, element, RegEx) {   
return RegEx.test(value); 
}, "Not Valid!");  

var keyterms = document.getElementsById("terms_out")[0].val; 

$("#Form").validate({ 

rules: { 
     summary: { 
      required: true, 
     regex: new RegExp(keyterms) 
     } 
    } 
}); 
}); 

我很新在这,所以请原谅我的无知。过去几天我一直在为此付出努力,所以我非常感谢您提供的任何帮助。

回答

0

Doh!我想到了。 jquery在terms_out输入有价值之前尝试验证。我所要做的就是将验证包装在一个函数中,并在提交时调用它。像这样...

<input id="terms_out" type="text" class="terms_out" name="terms_out" value=""/> 

<form id="Form"> 
<input id='summary' name="summary" value="" /> 
<input type="submit" value="Go" onclick="changevalue()"/> 
</form> 



<script> 
function changevalue() { 

$.validator.addMethod('regex', function(value, element, RegEx) {   
return RegEx.test(value); 
}, "Not Valid!");  

$("#Form").validate({ 

rules: { 
     summary: { 
      required: true, 
     regex: new RegExp($("#terms_out").val()) 
      } 
     } 
    }); 
} 
</script>