Я использую метод 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");
}
})
}
}
Но это всегда дает мне консольную ошибку undefined, говоря, что значение не может быть взято из атрибута undefine.
Вы можете увидеть сообщение об ошибке здесь:
вот скрипка, которую я создал и которая работает. http://jsfiddle.net/afzaal_ahmad_zeeshan/ZBcby/
if (comment.value != "" || comment.value != null) {
Вы получили значение с val()
. Поэтому у вас есть строка. Вы пытаетесь получить value
свойства строки. Это не сработает.
Это будет:
if (comment != "" || comment != null) {
Или, по сути, еще проще:
if (comment) {
Uncaught TypeError: Cannot read property 'value' of undefined
Когда вы вызываете свою функцию следующим образом:
onclick="commentThis(@row.PostId)"
... он не устанавливает значение this
элемента, который был нажат. this
будет window
. Вы можете изменить его, чтобы явно установить значение this
:
onclick="commentThis.call(this,@row.PostId)"
Вам также потребуется изменить следующую строку вашей функции:
if (comment != "" || comment != null) {
потому что условие if всегда будет истинным, потому что либо comment != ""
будет true, либо comment != null
будет true. Вы, вероятно, хотели использовать &&
вместо ||
:
if (comment != "" && comment != null) {
... но вы можете упростить это:
if (comment) {
(И на практике, учитывая, что comment
является результатом вызова .val()
он никогда не будет null
в любом случае, это будет либо строка или undefined
- и если вы получите селектор вправо он не будет undefined
.)
PostId
в функцию, но не используете его в функции?