我有一个textarea,我将加载与我的select值相对应的术语。我使用.load将内容加载到textarea(" load_myinvoices_default_terms.php?id =" + id)。我可以成功加载内容。但是当我在textarea上键入然后更改所选的选项时,.load()函数将不再加载。
我的预感是,当我在textarea上键入时,它会被赋予值,而在我使用.load时,它会被放在html上。 我只是希望能够在textarea上输入,并且在我更改所选选项时仍然可以更改它的值。
invoice.php:
<select id="setDefaultTermSelection" name="invoice_term_id" onChange="load_myinvoices_default_terms();">
<option value="0">Set as new term</option>
<option value="1">Term 1</option>
<option value="2">Term 2</option>
</select>
<textarea id="default_terms" name="invoice_terms" placeholder="Enter your terms and conditions" rows="5"></textarea>
脚本:
<script type="text/javascript">
function load_myinvoices_default_terms()
{
var id = $("#setDefaultTermSelection").val();
$("#default_terms").load("load_myinvoices_default_terms.php?id="+id);
}
$("#default_terms").keyup(function(e)
{
$("#setDefaultTermSelection").val(0);
});
</script>
load_myinvoices_default_terms.php:
<?php
include ("includes/connection.php");
$id = $_REQUEST['id'];
if($id > 0)
{
$query = "SELECT * FROM terms WHERE user_id = $_SESSION[user_id] AND term_id = $id";
$selectQuery = mysqli_query($con,$query);
$row = mysqli_fetch_array($selectQuery);
echo $row['term_description'];
}
else
echo "";
?>
答案 0 :(得分:1)
当您以编程方式设置选择值时,会发生以下情况:$("#setDefaultTermSelection").val(0);
,事件change
不已触发。
onchange
仅在用户点击时触发。来自MDN:
针对
<input>
,<select>
和<textarea>
触发了更改事件 元素的值的更改由...提交时的元素 用户即可。与输入事件不同,更改事件不一定 为元素值的每次更改触发。
但是,您可以使用jQuery的trigger()
方法手动触发更改(“模拟”用户点击)。像这样:
$("#setDefaultTermSelection").val("0");
$("#setDefaultTermSelection").trigger("change");
或(一行):
$("#setDefaultTermSelection").val("0").change();
在上一个示例中,.change()
是.trigger("change")
有些观点:
value
内的<option>
标记是一个字符串。因此,您应该使用.val("0");
。onchange
,而不是onChange
(资本“C”)。但是,现代浏览器实际上都接受这两种方式。答案 1 :(得分:0)
我已经解决了这个问题。 首先,我将这些放在我的脚本上,正如mrlew建议的那样。
$("#setDefaultTermSelection").val("0");
$("#setDefaultTermSelection").trigger("change");
然后在load_myinvoices_default_terms.php:
<?php
include ("includes/connection.php");
$id = $_REQUEST['id'];
if($id > 0)
{
$query = "SELECT * FROM terms WHERE user_id = $_SESSION[user_id] AND term_id = $id";
$selectQuery = mysqli_query($con,$query);
$row = mysqli_fetch_array($selectQuery);
$x = $row['term_description'];
json_encode($x);
}
else
echo "";
?>
<script>
var ar = <?php echo json_encode($x) ?>;
$("#default_terms").val(ar);
</script>
有更有效的方法来解决这个问题,所以请让我知道,谢谢:)