我的jQuery代码不会在我的Ajax代码之前 触发。 (jQuery代码的作用是将我的select元素更改为输入)。但是,它只会在我的Ajax代码之后 触发,但会产生不希望的结果-它将(现已隐藏)select元素的值插入数据库,而不是可见输入元素的值。如何使我的jQuery代码正常工作,以便它将成功将我的select元素更改为输入并将正确的值插入数据库?
这是包含select和input元素的html:
<form method="post" action="tocarthand.php?strid=<?php echo $prodtab->strid; ?>&prodid=<?php echo $prodtab->prodid; ?>" id="toctform">
<select name="toctquantsel" id="quantsel">
<?php $q = $prodtab->quant; ?>
<?php for ($q = 1; $q <= 10; $q++): ?>
<option value="<?php echo $q; ?>"><?php echo $q; ?></option>
<?php endfor; ?>
<?php if ($q > 10): ?>
<option value="<?php echo $q; ?>"><?php echo $q; ?>+</option>
<?php endif; ?>
</select>
<input type="text" name="toctquant" id="inphid">
<input hidden name="toctquant" value="0">
<button type="submit" name="tocartbut" id="tocartbut">Add to Cart</button>
<div class="excquant"></div>
</form>
这是应该首先触发的jQuery代码:
$(function(){
$(document).on("change", "#quantsel", function(){
if($(this).val() == "11") {
$("#inphid").show().focus();
$("#quantsel").hide();
}
});
});
这是jQuery之后的Ajax代码:
$(function(){
$(document).on("submit", "#toctform", function(){
var selectValue = $('#quantsel').val();
var inputValue = $('#inphid').val();
var strid = '<?php echo $prodtab->strid; ?>';
var prodid = '<?php echo $prodtab->prodid; ?>';
$.ajax({
type: 'POST',
url: "tocarthand.php?strid="+strid+"&prodid="+prodid;
data: {selectValueBox: selectValue, inputValueBox: inputValue}
success: function(data){
alert("Data Save: " + data);
}
});
});
});
答案 0 :(得分:0)
我在脚本中做了一些小修改
$(function(){
$(document).on("submit", "#toctform", function(event){
event.preventDefault();
var selectValue = $('#quantsel').val();
var inputValue = $('#inphid').val();
var strid = '<?php echo $prodtab->strid; ?>';
var prodid = '<?php echo $prodtab->prodid; ?>';
$.ajax({
type: 'POST',
url: "jtest.php?strid="+strid+"&prodid="+prodid,
data: {selectValueBox: selectValue, inputValueBox: inputValue},
success: function(data){
alert("Data Save: " + data);
}
});
});
});
检查它,让我知道它可以解决问题。