Reputation: 1428
<p><a href="index.html" data-role="button" data-icon="arrow-r" data-iconpos="right" data-theme="a" onclick="doSomething(); return false">VERIFY</a></p>
I am using the above code which is a jQM button with the onClick() set. The onclick is called and doSomething() is executed but after that, jQM shows the "error loading page" message.
How can I supress the error? In this case I want the jQM button but don't want it to change page.
Thanks
Upvotes: 28
Views: 98265
Reputation: 551
I think you should be append data-ajax="false"
inside anchor tag..
because in jQuery mobile the page transition is done by AJAX, and for page transition
it must be false..
Upvotes: 0
Reputation: 85298
I think your problem is that you have multiple actions on your button and are using a anchor tag. When clicking the button you're invoking the page to transition to index.html and a onClick event.
<a
href="index.html" <-- go to index.html
data-role="button"
data-icon="arrow-r"
data-iconpos="right"
data-theme="a"
onclick="doSomething(); return false"> <-- Click event
VERIFY
</a>
Might try (might need to remove/add some other attributes)
<input
type="button"
name="verify"
id="verify"
data-icon="arrow-r"
data-iconpos="right"
data-theme="a"
value="VERIFY" />
and now add a click event
$('#verify').click(function() {
alert('Button has been clicked');
});
Live Example: http://jsfiddle.net/vRr82/2/
Upvotes: 6
Reputation: 40863
Since you are using jQuery I would recommend to use jQuery to wire up your events as well. With that being said using e.preventDefault();
and e.stopImmediatePropagation();
should stop jQuery mobile from performing the default action on the <a/>
.
$("#verify").click(function (e) {
e.stopImmediatePropagation();
e.preventDefault();
//Do important stuff....
});
Update
The better way to use your existing markup would be to simply add rel="external"
to your <a/>
And your onclick
should behave correctly.
<p>
<a href="index.html" data-role="button" data-icon="arrow-r" data-iconpos="right" data-theme="a" onclick="doSomething(); return false" rel="external">VERIFY</a>
</p>
This will work since jQuery Mobile will treat the link as a normal <a/>
tag and return false will simply stop the default action.
Upvotes: 45