【发布时间】:2013-05-07 12:53:59
【问题描述】:
我有以下正常工作的 JQuery 函数:
$(function () {
$('#accmenu').change(function() {
$(".insightsgraphs div").hide();
$(".insightsoptions input").removeClass("green");
$("#newLikes").one('click', function () {
$.ajax({type:'GET', url: 'newLikes.php', data:$('#ChartsForm').serialize(), success:
function(response) {
var json = response.replace(/"/g,'');
json = "[" + json + "]";
json = json.replace(/'/g,'"');
var myData = JSON.parse(json);
var myChart = new JSChart('dailyNewLikes', 'line');
myChart.setDataArray(myData);
myChart.setAxisNameX('');
myChart.setAxisNameY('');
myChart.setAxisValuesColorX('#FFFFFF');
myChart.setSize(470, 235);
myChart.setTitle('Daily New Likes');
myChart.draw();
}});
return false;
});
$("#unlikes").one('click', function () {
$.ajax({type:'GET', url: 'unlikes.php', data:$('#ChartsForm').serialize(), success:
function(response) {
$("#dailyUnlikes").html(response);
}});
return false;
});
});
$("#newLikes").on('click', function(){
$(this).toggleClass('green');
$('#dailyNewLikes').toggle();
return false;
});
$("#unlikes").on('click', function(){
$(this).toggleClass('green');
$('#dailyUnlikes').toggle();
return false;
});
});
但我想创建一个条件:如果以下两个日期输入之一:
var since = $('#dateoptions input[name="since_date"]').val();
var until = $('#dateoptions input[name="until_date"]').val();
为空 我想收到警报,并且仅在满足条件时才执行 .one() 函数。例如,当我在没有输入日期的情况下单击其中一个按钮时,我希望收到类似alert("One of the date or both missing") 的警报,并且在我选择日期并再次按下按钮以执行上面的.one() 函数后例子。我希望我让自己足够清楚。我知道我可以使用类似的东西:
if (until == "" || since == "") {
alert("One of the date or both missing")
} else {}
但是到目前为止我的尝试没有成功。可能我没有将条件放在应有的位置...此外,还可以通过警报将输入集中、突出显示或类似的东西?
编辑: 这是一个小提琴: http://jsfiddle.net/DanielaVaduva/ueA7R/6/ 我用其他东西替换了 ajax 调用而不修改流程。
【问题讨论】:
-
应该可以,你能在jsfiddle.net提供一个演示吗?
-
你试过
if (until.trim().length === 0 || since.trim().length === 0)吗? -
不是 if 语句是问题,而是放在哪里是问题,因为如果我把它放在 ajax 调用之前,如果输入丢失,它将执行
.one()而没有 get 请求我第二次按下按钮它不再发出请求,因为.one()已经执行了一次。我可能需要重置.one()计数器之类的东西? -
@DanielacostinaVaduva 在调用 ajax 之前,您必须将它放在每个
onclick函数中。如果它的长度为 0,则alert(...)否则ajax({...})。你问的是这个吗? -
您可以使用
.on()代替.one(),然后在验证并成功发送data后使用.off()取消绑定事件。
标签: javascript jquery html ajax html-input