2016-02-15 35 views
0

我在我的网站上使用MVC,并且在窗体上使用“onclick”时遇到麻烦。这里是我的代码:Iphone设备上的jquery onclick

using (@Html.BeginForm("findpost", "keyword", FormMethod.Post, new { id = "mainForm" })) 
        { 
         <button type="submit" class="btn-submit" name="s" onclick="showupdate();"></button> 
         <input name="query" type="text" id="query" value="@Model.search" placeholder=" ex: iPod"> 
         <input type="hidden" name="pos" value="" /> 
         <input type="hidden" name="dis" value="" /> 
        } 

的showupdate();在加载结果页面时显示一个gif。这是工作得很好的桌面& Android设备。搜索在iPhone上有奇怪的行为。它只考虑我输入的第一个关键字(来自主页)。如果我删除“onclick = ...”,它可以工作,但它不会加载gif ... 任何想法可能来自哪里?我试图直接在JS中添加点击,但它也不起作用。

这里是GIF:

function preparepreloader() { 
var loader = $('<div class="preloaderwrapper hiddenn">' + 
'</div>' + 
'<div class="preloader hiddenn">' + 
    '<div class="prewrapper">' + 
     '<div class="eyeglass">' + 
      '&nbsp;</div>' + 
     '<div class="preloaderanimate">' + 
      '&nbsp;</div>' + 
    '</div>' + 
'</div>'); 

var new_loader = $('<div class="preloader_gif preloader hiddenn"> <img src="'+ mediaUrl +'/img/loader/712.gif" /> </div>'); 

$('#updatepreloader').append(loader); 
$('#updatepreloader').append(new_loader);} 
+0

是对GIF已经在体(隐藏),或者你将其追加使用showupdate()函数之后? – Vixed

+0

这是一个“追加”。之前有一些检查,但我可以添加代码。 – Gun

+0

问题是,当您提交表单时,您正在尝试加载图像,那么您希望浏览器首先加载的是什么?您必须这样做:将div“preloaderwrapper”隐藏在主体中,并且只需显示它,或者阻止默认事件,构建div,然后继续执行submit default事件。我会尽量写一个答案尽快。 – Vixed

回答

1

只需添加一个类hasLoader你想展示你的GIF提交后的形式,这样就可以防止默认事件,加载GIF,然后表格将在提交后自动提交。对不起,但我很困惑showupdate()preparepreloader()所以我希望这是一些东西,我明白了。

MVC

using (@Html.BeginForm("findpost", "keyword", FormMethod.Post, new { @id = "mainForm", @class = "hasLoader" })) 
{ 
    <button type="submit" class="btn-submit" name="s"></button> 
    <input name="query" type="text" id="query" value="@Model.search" placeholder=" ex: iPod"> 
    <input type="hidden" name="pos" value="" /> 
    <input type="hidden" name="dis" value="" /> 
} 

JS

$('.hasLoader').on('submit',function(e){ 
    e.preventDefault(); 
    var loader = $('<div class="preloaderwrapper hiddenn"></div>' + 
    '<div class="preloader hiddenn">' + 
     '<div class="prewrapper">' + 
      '<div class="eyeglass">&nbsp;</div>' + 
      '<div class="preloaderanimate">&nbsp;</div>' + 
     '</div>' + 
    '</div>'); 

    var new_loader = $('<div class="preloader_gif preloader hiddenn"> <img src="'+ mediaUrl +'/img/loader/712.gif" /> </div>'); 

    $('#updatepreloader').append(loader, new_loader); 
    $(this).off('submit').submit(); 
}); 
+0

谢谢,我没有把我所有的代码,只有基本但你明白了!这很有帮助! – Gun

+0

不客气!但是,请只为我,请告诉我,如果** showupdate()**和** preparepreloader()**是相同的功能? – Vixed

+0

实际上,showupdate()只是做一些基本检查(null或空关键字和一些基本的sutff),然后调用prepareloader。 – Gun