エンターキーを押したときにフォームを送信するために、さまざまな方法を試してきました。入力フィールドで機能することはわかっていますが、これはコメントになるため、テキスト領域である必要があります。
これは、フォームをボタンで送信するために現在持っているものです。
$('.messageSubmit').live('click', function(){
var name = $(this).siblings('.messageTextarea').val();
var theid = $(this).attr('data-the_id');
var dataString = name;
$.ajax({
dataType: 'json',
url: "https://api.instagram.com/v1/media/"+$(this).attr('data-the_id')+"/comments?"+hash,
type: "POST",
data: "text="+dataString,
success: function(data) {
// finish load
console.log(data, dataString, 'fail');
},
error: function(data) {
var username = JSON.parse(localStorage.getItem('iguser'));
var profilepic = JSON.parse(localStorage.getItem('iguserimg'));
//console.log(data, dataString, 'succ');
$('.box[data-the_id="' + theid + '"]').children('.postMessage').children('.messageComments').append('<li><img class="commentUserImg" src="' + profilepic + '"><div class="commentUser">' + username + '</div><div class="commentText">' + dataString + '</div></li>');
$('.messageTextarea').val(''); // Remove comment from TextArea
}
});
return false;
});
それは正常に動作します。送信ボタンを削除し、ユーザーが Enter キーを押したときにフォームを送信したいだけです。これに反対する人もいると思いますが、この Web サイトのユーザーは、Facebook などから Enter キーを押すことに慣れています。
このような方法を試しましたが、どれもうまくいかないようです。
$('.messageTextarea').keydown(function() {
if (event.keyCode == 13) {
this.form.submit();
return false;
}
});
ここに私のフォームコードがあります
<form>
<textarea class="messageTextarea" onfocus="if(this.value==this.defaultValue)this.value=\'\';" onblur="if(this.value==\'\')this.value=this.defaultValue;">Write your comment here...</textarea>
<input type="submit" data-the_id="' + theid + '" name="submit" class="messageSubmit" id="submit_btn" value="Submit your comment">
</form>
どんな助けでも素晴らしいでしょう。また、フォームが Textarea の現在のデフォルト値で送信されないようにする if 関数を追加する方法を誰かが知っていれば、それは素晴らしいことです。現在、テキストエリアがどのように設定されているかで、送信を押すだけで送信されます ここにコメントを書いてください...
ありがとう
EDIT:回避策は...通常のように送信するボタンがありますが、非表示にして、Enterキーを押すとそのボタンの呼び出しがトリガーされますか?しかし、その後...新しい行に入る以外はテキストエリアで何もしないという同じ問題に遭遇しました...