我有一个输入字段,用户可以在其中输入一个INPUTVALUE
,INPUTVALUE
它会根据正则表达式检查正确性,然后发送到一个 php 文件,该文件将使用它进行计算,并返回 0 (意味着INPUTVALUE
无效)或一个RETURNVALUE
。这RETURNVALUE
应该显示在具有 id 的网站上的元素中#VALUEINFO
。我也希望RETURNVALUE
我的函数返回这个get_value_by_input()
。为了检查返回的内容,我首先显示警报。
(实际应用可能是订单上的优惠券代码......输入您的优惠券代码,我们在数据库中检查它,它返回优惠券的价值,如果它不是有效的优惠券代码,则返回 0。 )
我的问题是,我必须在 Javascript 中弄乱变量范围,因为即使我的#VALUEINFO
显示正确RETURNVALUE
,警报总是会说no returnvalue specified
.
function get_value_by_input()
{
var returnvalue;
var valueinfo = $('#valueinfo');
valueinfo.text('');
var inputvalue = $("input[name='inputvalue']").val();
var correctinput = /^[a-zA-Z]*$/i;
if( inputvalue.length > 0 && correctinput.test(inputvalue))
{
$.post('ajax/valuecheck.php', {inputvalue_test: inputvalue}, function(is_valid){
if(is_valid == 0)
{
valueinfo.text('Sorry, this input is not working...');
returnvalue = 0;
}
if(is_valid != 0)
{
valueinfo.text('the returned value for your input is '+is_valid);
returnvalue = is_valid;
}
});
}
else
{
if(inputvalue)
{
valueinfo.text('Invalid input.');
returnvalue = 0;
}
}
if(returnvalue)
{
alert('the value for this input was was '+returnvalue);
return returnvalue;
}
else
{
alert('no returnvalue specified.');
return 0;
}
}
再次: 即使#VALUEINFO 给了我正确的返回值,为什么这段代码总是提示“没有指定返回值”?
我认为这与 if 块有关,我读到即使条件不满足,javascript 也不会忽略 if 块中任何变量的设置......但是我怎么能将值传递给 #valueinfo 并返回同时呢?任何帮助或建议将不胜感激!:-)
编辑:
嗯,是的,它与变量范围无关,但它与 Asynchronus-jax 有关。我最终重组了我的代码......get_value_by_input()
现在更像是一个process_input()
函数。首先INPUTVALUE
检查正确性,并且只有在没有错误$.post(...
的情况下才会调用。然后在回调函数中立即使用 php 文件返回的值,而不是返回然后从另一个函数中使用......不幸的是,我无法让我的大脑围绕使用.done()
或类似的东西,我猜我已经今天已经在这方面工作太久了...... -.- 也许下次。它现在有效:)