I am using the ui:inputtext
for lightning component. When the user hit enters the page refreshes. Is there anyway to stop it from doing that.
Cmp
<aura:component controller="MovieController">
<aura:registerevent name="searchfilter" type="c:searchEvent"/>
<aura:attribute name="movie" type="Movies__c"
default="{'sobjectType' : 'Movies__c',
'Name': '',
'Director__c': '',
'Genres__c': '',
'Duration__c': 0,
'Year__c': 0,
'Content_Rating__C': '',
'Plot__c': ''}"/>
<div class="SearchBox" >
<fieldset class="slds-box slds-theme--default slds-container--full">
<form class="slds-form--stacked">
<div class="slds-form-element slds-is-required">
<div class="slds-form-element__control" style="text-align: center">
<div calss="searchinput" style="padding-left: 150px; padding-right: 150px; padding-bottom: 20px; min-width: 200px;">
<ui:inputText aura:id="iName" value="{!v.movie.Name}" label="Search"
class="slds-input"
labelClass="slds-form-element__label"
keyup="{!c.checkKey}"/>
</div>
<ui:button label="Search" press="{!c.SearchMovie}"/>
</div>
</div>
<!--ui:button label="Clear" press="{!c.clearFields}"/-->
</form>
</fieldset>
</div>
</aura:component>
controller
SearchMovie : function(component, event, helper) {
helper.getMoviesfiltered(component);
},
checkKey : function(component, event, helper){
if(event.getParams().keyCode == 13){
event.preventDefault();
console.log("enter was pressed");
helper.getMoviesfiltered(component);
}
},
Best Answer
The ui:inputText element fires off a COMPONENT event, which basically hides the native DOM event. There's a parameter you're expected to use (apparently) to get to the base event. Here's a self-contained, fully functional version:
Alternatively, you can handle the form submission itself: