在我的HTML代码中,有几个提交按钮,我已经为提交按钮分配了一个特定的ID,但是当它转到jQuery部分时,只有第一个提交按钮有效。其他提交按钮返回false。
我正在使用的HTML(在PHP文件中);
$sid = intval($sid);
$comment_box = '
<div class="comment_box_tcat"><a href="javascript:void(0);" id="comment_box" sid="'.$sid.'">Post Comment</a></div>
<div id="comment_box_show_'.$sid.'" style="display: none;">
<div id="latest_comments">'.get_latest_comments($sid).'</div>
<form action="" method="post">
<textarea name="message" id="comment_message" maxlength="'.$mybb->settings['mystatus_chars'].'" value="" style="resize: none;" cols="35" rows="3" tabindex="4"></textarea>
<input type="hidden" name="sid" id="sid" value="'.$sid.'" />
<input type="hidden" name="uid" id="uid" value="'.$mybb->user['uid'].'" />
<input type="submit" name="submit" value="Submit" tabindex="5" id="comment_submit_'.$sid.'" onClick="return false;">
</form>
</div>';
和jQuery是;
// Post Comment
jQuery(document).ready(function($)
{
$('input[id^="comment_submit_"+sid]').on('click', function ()
{
var message = $("#comment_message").val();
var sid = $("#sid").val();
var uid = $("#uid").val();
if (!message)
{
alert('Message is missing.');
return;
}
$.ajax(
{
type : "post",
dataType: "html",
url : "status.php?action=do_post_comment",
data : "message="+message+"&uid="+uid+"&sid="+sid,
success : function(response)
{
$('#latest_comments').html(response).show();
document.getElementById('comment_message').value = '';
document.getElementById('comment_message').focus();
}
});
return false;
});
});
答案 0 :(得分:3)
您的选择器必须是:$('input[id^="comment_submit_"'+sid+']')
,它使用sid
变量。在使用上述选择器之前,您不会定义该变量,因此您当前的架构存在缺陷。
此外, id应该是唯一的,但是你在循环中重复使用它们,这将会抛弃所有内容。你的大多数代码只是一团糟而已。理解html和javascript。
您的问题是 X/Y problem。我建议你在SO上另外发一篇文章来描述你的项目(你想要做什么以及为什么要做?)并解释你尝试过的东西(比如这个例子),以便人们知道你至少试图想出一些东西。然后,人们可以就您的问题找到一个好方法的建议,以帮助您开始建立良好的基础。