0

我正在使用parent()find()方法来访问相应按钮的文本区域。

但我每次都不确定。我已经在 jsfiddle 中尝试过,但是那个小提琴有效。这是代码

<div>
  <textarea id="textarea"></textarea>
  <button onclick="commentThis('10')">Post Comment</button>
  <button onclick="neverMind('10')">Never Mind</button>
</div>

jQuery代码是

function commentThis(postId) {
   var comment = $(this).parent().find("#textarea").val();
   if (comment != "" || comment != null) {
     $.ajax({
       url: "/ajax_requests/post_comment",
       data: "postId=" + postId + "&type=comment&comment=" + 
       comment + "&page=default",
       success: function (result) {
          $(".comments").append(result);
          $("#textarea").val("");
          $("#textarea").css("height", "20px");
       }
     })
   }
}

但它总是给我一个未定义的控制台错误,说不能从 undefine 属性中获取值。

您可以在此处查看错误消息:

在此处输入图像描述

这是我创建并且有效的小提琴。http://jsfiddle.net/afzaal_ahmad_zeeshan/ZBcby/

4

2 回答 2

2
if (comment.value != "" || comment.value != null) {

你得到了价值val()。因此,您有一个字符串。您正在尝试获取value字符串的属性。这行不通。

这将:

if (comment != "" || comment != null) {

或者,事实上,更简单:

if (comment) {
于 2013-11-14T19:51:33.957 回答
1

当你这样调用你的函数时:

onclick="commentThis(@row.PostId)"

...它不会将值设置为this被单击的元素。thiswindow。您可以将其更改为显式设置的值this

onclick="commentThis.call(this,@row.PostId)"

您还需要更改函数的以下行:

if (comment != "" || comment != null) {

因为如果条件总是为真,因为要么comment != ""为真,要么comment != null为真。您可能打算使用&&而不是||

if (comment != "" && comment != null) {

...但是您可以将其简化为:

if (comment) {

(实际上,鉴于comment调用.val()它的结果无论如何都不会是null,它要么是一个字符串,要么是undefined- 如果你选择正确,它就不会是undefined。)

于 2013-11-14T20:04:30.140 回答