2012-08-24 9 views
5

Tôi có ứng dụng web iOS này, cần gửi biểu mẫu thông qua Ajax, hoạt động cho hầu hết các phần. Điều duy nhất không hoạt động là nút GO trên bàn phím không phản hồi.Nút web GO của ứng dụng web iOS không gửi biểu mẫu Ajax

Mở trình duyệt máy tính để bàn, mọi thứ hoạt động nộp (nút gửi, hoặc phím enter)

Mở Safari iOS, tất cả mọi thứ hoạt động tốt quá (nút gửi, GO nút bàn phím)

Nhưng khi sử dụng nó như là một Ứng dụng web trên iOS, nút GO không hoạt động!

Điều gì có thể gây ra hành vi này? Một ứng dụng web iOS vẫn sử dụng Safari như xa như tôi biết ... :)

<form id="myForm" name="form" action="link-to-script.php" method="post"> 
<table> 
    <tr> 
     <td><input id="name" name="name" type="text" size="20" maxlength="25" /></td> 
    </tr> 
    <tr> 
     <td><input id="email" name="email" type="text" size="20" maxlength="50" /></td> 
    </tr> 
    <tr> 
     <td><input type="submit" name="Submit" value="Send" /></td> 
    </tr> 
</table> 

$('#myForm').submit(function(e) { 
    e.preventDefault(); // Doesn't matter 
    var dataString = $(this).serialize(); 
    $.ajax({ 
     type: "POST", 
     url: "http://link-to-script.php?", // Valid link for the use of this form 
     cache: false, 
     data: dataString, 
     success: function() { 

     } 
    }); 
}); 

UPDATE (SOLVED): Tôi đã gỡ bỏ các preventDefault() một lần nữa. Nó không làm tắc nghẽn tôi, nhưng tôi không thích mã không cần thiết. :)

Khi tôi thêm return false; ở cuối số $('#myForm').submit(function() {, mọi thứ hoạt động như tôi muốn.

Nút GO, nút Enter và Submit trên iOS tất cả đều phản hồi ngay bây giờ.

Trả lời

3

Bạn đã cố gắng hooking vào nút "Done/nhập":

$("#myForm input").live("keyup", function(evt) { 
    if (evt.keyCode === 13) { 
    $("#myForm").trigger("submit"); 
    } 
}); 
+0

Xin cảm ơn, nhưng nếu tôi đặt mã đó trước mã gửi biểu mẫu của tôi, nó sẽ không tạo sự khác biệt. Thật lạ khi nó KHÔNG hoạt động khi được xem bên trong ứng dụng Safari (ngay cả khi không có đoạn mã của bạn), nhưng không phải khi sử dụng nó làm ứng dụng web (được thêm vào màn hình chính). – fishbaitfood

0

Cung cấp URL đầy đủ cho hình thức hành động của bạn trong hình thức, hoặc không nộp qua JS. bạn có hai hành động biểu mẫu được thiết lập cho cùng một biểu mẫu - một hành động trong biểu mẫu mà không có URL đầy đủ và một thứ hai trong quá trình gửi Ajax của bạn.

Ngoài ra, tại sao bạn ngăn chặn hành động biểu mẫu mặc định bằng JS của mình?

4

Tôi đã phát hiện ra rằng việc thêm mục tiêu = "_ trống" vào thẻ sẽ phá vỡ nút Bắt đầu trên bàn phím iOS.