簡単な答えは、リストビュー項目に送信ボタン (少なくとも表示可能) を置かないことです。問題は、ボタンと lisview アイテムのコンテンツ領域padding
にmargin
、border
、 などのスタイリングがあることです。スタイリングと戦う代わりに、jQM が提供するものを活用することができます。
IMHO の代わりに使用できる場合GET
POST
href
、必要なものを達成する最も簡単な方法は、フォームを捨てて、パラメーターを使用して適切な URL へのアンカーをリスト項目に入力し、次のrel="external"
ように使用することです。
<div data-role="popup" id="navmenu" style="min-width:210px;">
<ul data-role="listview" data-inset="true">
<li data-role="divider">Navigate to:</li>
<li><a rel="external" href="X.php?nav1=Section 1:1">Section 1:1</a></li>
<li><a rel="external" href="X.php?nav2=Section 1:2">Section 1:2</a></li>
<li><a rel="external" href="X.php?nav3=Section 1:3">Section 1:3</a></li>
<li><a rel="external" href="X.php?nav4=Section 1:4">Section 1:4</a></li>
</ul>
</div>
フォームにアクセスできるようにしたい場合POST
は、非表示の入力と少しの JS コードを利用できます。次のマークアップを作成するとします。
<div data-role="popup" id="navmenu" style="min-width:210px;">
<form name="navmenuform" action="X.php" method="post" data-ajax="false">
<ul data-role="listview" data-inset="true">
<li data-role="divider">Navigate to:</li>
<li><a href="nav1">Section 1:1</a></li>
<li><a href="nav2">Section 1:2</a></li>
<li><a href="nav3">Section 1:3</a></li>
<li><a href="nav4">Section 1:4</a></li>
</ul>
<input id="param" type="hidden" name="" value="">
</form>
</div>
タグを付けるのを忘れないdata-ajax="false"
でくださいform
。そうしないと、jQM はデフォルトで ajax 経由でフォームを送信しようとします。
次にclick
、リスト項目でイベントを使用し、非表示の入力で名前と値を変更して、フォームを送信します。
$(document).on("pageinit", "#page1", function(){
$("#navmenu ul li a").click(function(e){
//Prevent default behavior since we need to submit the form instead of following the link
e.preventDefault();
//Change name and value attributes in out hidden input
$("#param").attr("name", $(this).attr("href")).val($(this).text());
//Submit the form
$("form[name=navmenuform]").submit();
});
});
ここにjsFiddleがあります