Form submitting when pressing enter in Textarea

后端 未结 3 522
小鲜肉
小鲜肉 2020-12-28 23:38

I\'ve been trying various methods to get a form to submit when hitting the enter key. I know it works with an input field, but because this is going to be a comment, it nee

相关标签:
3条回答
  • 2020-12-29 00:03

    try this jsfiddle

    HTML:

    <form>
       <textarea class="messageTextarea">Write your comment here...</textarea>
    
     </form>​
    

    JS:

           $('.messageTextarea').keydown(function(event) {
        if (event.keyCode == 13) {
            $(this.form).submit()
            return false;
         }
    }).focus(function(){
        if(this.value == "Write your comment here..."){
             this.value = "";
        }
    
    }).blur(function(){
        if(this.value==""){
             this.value = "Write your comment here...";
        }
    });
    
    $("form").submit(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?",
            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;
    });
    ​
    ​
    

    0 讨论(0)
  • 2020-12-29 00:04

    try it this way

    <form method="post" action="">
        <textarea></textarea>
    </form>
    
    <script type="text/javascript" src="./lib/js/jquery/jquery-1.8.1.min.js"></script>
    
    <script type="text/javascript">
        jQuery('textarea').keydown(function(event) {
            if (event.keyCode == 13) {
    
                this.form.submit();
                return false;
             }
        });
    </script>
    

    I tested it, and it worked

    I added only the parameter event to the function header

    0 讨论(0)
  • 2020-12-29 00:12

    I think you would also want to give users ability to go to new line using shift.

    $('.messageTextarea').on('keyup', function(e) {
        if (e.which == 13 && ! e.shiftKey) {
            // your AJAX call
        }
    });
    

    See this: http://jsfiddle.net/almirsarajcic/Gd8PQ/

    It worked for me.

    Also, you need to remove that submit button you currently have.

    0 讨论(0)
提交回复
热议问题