Ho bisogno del tuo aiuto. Sto usando AjaxBeginform per inviare una domanda in un piccolo campo di testo. Posso inviare la domanda, e posta bene al db, tuttavia la domanda non viene mai chiarita. Sto usando Ajax perché non voglio che l'intera pagina sia pubblicata. Ho provato a usare this.rest(); ma quello funziona in IE ma non funzionerà in Firefox e in Chrome. Ho provato $ ('# domanda'). Reset(); Ma non funziona ancora. Sono sicuro che è qualcosa che sto facendo in modo errato.Utilizzando Ajax, la casella di testo non è deselezionata per l'invio in MVC
Ecco il mio codice qui sotto. Grazie per l'aiuto.
Questo è il mio script nella parte superiore della pagina:
<script type="text/javascript" src="~/Scripts/jquery-migrate- 1.2.1.min.js"></script>
Ecco l'AjaxBeginForm insieme al testo
@using (Ajax.BeginForm("SendQuestion", new { PresId = Model.PresentationID, catalogId = ViewBag.CatalogId }, new AjaxOptions
{
HttpMethod = "Post",
UpdateTargetId = "questionTxt",
OnBegin = "OnBegin",
OnSuccess = "OnSuccess",
OnFailure = "OnFailure"
}))
{
<fieldset id="question">
<p>
<textarea id="questionTxt" style="font-size:12px" cols="20" rows="6" name="questionTxt" onclick="javascript:removeTextAreaWhiteSpace(this);"></textarea>
</p>
<button id="question-btn" type="submit">Submit</button>
</fieldset>
}
Qui è la mia funzione per OnSuccess
function OnSuccess() {
alert("Your question has been submitted.");
$('#question').val('');
}
Ecco il mio controller
public bool SendQuestion(string questionTxt, long PresId, long catalogId)
{
try
{
var db = new ODTEntities();
var pres = db.Presentations.FirstOrDefault(i => i.PresentationID == PresId);
var subject = db.Catalogs.FirstOrDefault(i => i.CatalogID == catalogId).CatalogCode + " - " + pres.Title + " - " + pres.Presenter.PresenterName;
Utils.AddQuestionToDB(db, PresId, catalogId, Utils.GetAttendeeId(), questionTxt);
string body = "This question : " + Environment.NewLine + questionTxt + Environment.NewLine + " was sent by " +
User.Identity.Name;
var catalog = db.Catalogs.FirstOrDefault(i => i.CatalogID == catalogId);
if (!string.IsNullOrEmpty(catalog.QuestionsEmail))
Helper.SendMail(body, subject, catalog.QuestionsEmail, "");
else
Helper.SendMail(body, subject);
}
catch (Exception)
{
return false;
}
return true;
}
Ora, come ho detto prima, ho provato questo, e sarà chiaro in IE ma non int Firefox o Chrome. Quindi quando invio il modulo il pop up ritorna con La tua domanda è stata inviata, mentre il popup è visibile, la domanda cambia in vero e poi fai clic su OK nella finestra popup, la casella di testo viene cancellata in IE:
function OnSuccess() {
alert("Your question has been submitted.");
$('#question').val('');
this.reset();
}
Se qualcuno può dirmi quello che sto facendo in modo errato, sarebbe molto apprezzato. Grazie.
L'ho modificato da domanda a domandaTesto e la domanda scompare dalla casella di testo, ma appare la parola "Vero". – Carla
intendi "vero" invece la domanda? proviene sicuramente da 'this.reset();' – 3pic
forse prova 'function OnSuccess() { alert (" La tua domanda è stata inviata. "); $ ('# questionTxt'). Val (''); this.reset(); $ ('# QuestionTxt') val (''); // Modificato } 'Ho modificato la mia risposta. Si prega di rileggerlo – 3pic