NIHVIVO-646 more work on javascript for add authors to publication form

This commit is contained in:
rjy7 2010-06-22 22:12:33 +00:00
parent a07f574cbf
commit c885ae010f
4 changed files with 43 additions and 35 deletions

View file

@ -273,7 +273,7 @@ SPARQL queries for existing values. --%>
<c:set var="title" value="<em>${infoResourceName}</em>: Authors" />
<c:set var="requiredHint" value="<span class='requiredHint'> *</span>" />
<c:set var="initialHint" value="<span class='hint'>initial okay</span>" />
<c:set var="initialHint" value="<span class='hint'>(initial okay)</span>" />
<jsp:include page="${preForm}" />
@ -323,8 +323,8 @@ SPARQL queries for existing values. --%>
<h3>Add an Author</h3>
<p class="inline"><v:input type="text" id="lastName" label="Last name ${requiredHint}" size="30" /></p>
<p class="inline"><v:input type="text" id="firstName" label="First name ${requiredHint}" size="20" />${initialHint}</p>
<p class="inline"><v:input type="text" id="middleName" label="Middle name" size="20" />${initialHint}</p>
<p class="inline"><v:input type="text" id="firstName" label="First name ${requiredHint} ${initialHint}" size="20" /></p>
<p class="inline"><v:input type="text" id="middleName" label="Middle name ${initialHint}" size="20" /></p>
<input type="hidden" id="label" name="label" value="" /> <!-- Field value populated by JavaScript -->
<div id="selectedAuthor">

View file

@ -65,7 +65,7 @@ form a:hover.cancel,
}
#content form p.inline label {
width: 10em;
width: 13em;
margin-top: 0;
}
@ -81,3 +81,7 @@ form a:hover.cancel,
#selectedAuthor {
clear: left;
}
#content form p.submit {
margin-top: 3em;
}

View file

@ -48,7 +48,13 @@ var addAuthorForm = {
this.setUpAutocomplete();
this.initAuthorListOnlyView();
// On this form, validation errors entail that a new person was being entered.
if (this.findValidationErrors()) {
this.initFormView();
this.showFieldsForNewPerson();
} else {
this.initAuthorListOnlyView();
}
},
bindEventListeners: function() {
@ -59,13 +65,35 @@ var addAuthorForm = {
});
this.submit.click(function() {
// NB Important JavaScript scope issue: if we call it this way, this = addAuthorForm
// in prepareFieldValuesForSubmit. If we do
// this.submit.click(this.prepareFieldValuesForSubmit); then
// this != addAuthorForm in prepareFieldValuesForSubmit.
addAuthorForm.prepareFieldValuesForSubmit();
});
this.lastNameField.blur(function() {
addAuthorForm.firstNameWrapper.show();
addAuthorForm.middleNameWrapper.show();
console.log("in blur")
addAuthorForm.onLastNameChange();
});
// Prevent form submission when hitting enter in last name field
this.lastNameField.keydown(function(event) {
if (event.keyCode === 13) {
console.log('in keydown')
addAuthorForm.onLastNameChange();
return false;
}
});
},
onLastNameChange: function() {
this.showFieldsForNewPerson();
this.firstNameField.focus();
},
showFieldsForNewPerson: function() {
this.firstNameWrapper.show();
this.middleNameWrapper.show();
},
// This view shows the list of existing authors and hides the form.
@ -139,11 +167,12 @@ var addAuthorForm = {
var cache = {};
var url = $('#acUrl').val();
var existingAuthorUris = addAuthorForm.getExistingAuthorUris();
console.log(existingAuthorUris);
var existingAuthorUris = addAuthorForm.getExistingAuthorUris();
jQuery.each(existingAuthorUris, function(index, element) {
url += '&filter=' + element;
});
$('#lastName').autocomplete({
minLength: 2,
source: url,

View file

@ -359,31 +359,6 @@ var customForm = {
});
},
// Return true iff there are validation errors on the form
findValidationErrors: function() {
return customForm.form.find('.validationError').length > 0;
// RY For now, we just need to look for the presence of the error elements.
// Later, however, we may generate empty error messages in the markup, for
// customized positioning, in which case we need to look for whether they have
// content. See clearFormData().
// var foundErrors = false,
// errors = this.form.find('.validationError'),
// numErrors = errors.length,
// i,
// error;
//
// for (i = 0; foundErrors == false && i < numErrors; i++) {
// error = errors[i];
// if (error.html() != '') {
// foundErrors = true;
// }
// }
//
// return foundErrors;
},
resetForm: function() {
// Clear all form data and error messages