2

バックグラウンド:

jQuery Mobile (JQM) で e コマース サイトを開発しています。JQM の Split Button Listview 属性を利用して、特定のカテゴリのすべての製品を一覧表示する製品ページを作成しました。

ここに私の作業コードがあります:

<ul data-role="listview" data-inset="true" data-split-icon="plus" data-split-theme="d"         data-theme="d" data-dividertheme="d">
<li data-role="list-divider" class="listdivider">SPI_Level3Entry</li>
<!-- SPI_HTML_Product_Entry1 -->
<li class="prod"><a href="SPI_ProdFullLink" onmouseover="window.status=''; return     true;" rel="SPI_ProdThumbnail"><img src="SPI_ProdThumbnail" alt="SPI_ProdEntryDesc"/>
<!-- SPI_HTML_Product_LinkItemNum -->
<h2>SPI_ProdEntryID</h2>
<!-- SPI_HTML_Product_LinkItemNum -->
<!-- SPI_HTML_Product_Entry_Others -->
<p class="space"><b>
<!-- SPI_HTML_Product_ColHdr_PNs -->
SPI_ColHdrOther</b>
<!-- SPI_HTML_Product_ColHdr_PNs -->
: SPI_ProdEntryOther</p>
<!-- SPI_HTML_Product_Entry_Others -->
<p class="description"><b>Description</b>: SPI_ProdEntryDesc</p>
<!-- SPI_HTML_AllowOrderPlacement -->
<!-- SPI_HTML_AllowViewPriceAvail -->
<p class="space"><b>Qty Avail</b>: SPI_ProdQtyAvail</p>
<p class="space"><b>Unit Price</b>: <span class="price">SPI_ProdEntryPrice</span></p>
<!-- SPI_HTML_AllowViewPriceAvail -->

<input name="SPI_CartProductIDFieldName" type="hidden" value="SPI_ProductID" />
<input name="SPI_CartMfgProdIDFieldName" type="hidden" value="SPI_MfgProdID" />
<input name="SPI_CartProductDescFieldName" type="hidden" value="SPI_ProductDesc" />
<input type="number" name="SPI_CartOrdQtyFieldName" class="nolink" value="0" />

</a>
<a href="#" onClick="javascript:if (document.AddItem.SPI_CartOrdQtyFieldName.value==0)    {document.AddItem.SPI_CartOrdQtyFieldName.value='1'};document.AddItem.submit();">Add</a>
<!-- SPI_HTML_AllowOrderPlacement -->
</li>
</ul>

問題

ご覧のとおり、各 li の内容は「a href」属性でラップされています。「a href」属性内に、テキスト入力があります。問題は、テキスト入力をクリックして値を入力すると、デフォルトの「a href」動作が発生することです。

質問

JQM のテキスト入力でデフォルトの "a href" 動作を防止しながら、残りの li コンテンツでデフォルトの "a href" 動作を維持するにはどうすればよいですか?

4

1 に答える 1

4

イベント オブジェクトで preventDefault() を呼び出すことにより、デフォルトの動作を防ぐことができます。

:

$('a').click(function(event){
    event.preventDefault();
    //also possible
    event.stopImmediatePropagation();
})
于 2012-06-06T18:27:58.380 に答える