Дело в том, что это поле создаётся динамически, поэтому его id заранее неизвестно. Поэтому вариант if (z.value.length == 8) {... не пойдёт.
<input style="width: 100px" type="text" name="books[]" id="if1" onChange="fieldChange(this.value,this.id);" maxlength="8"/>
function fieldChange(obj,numid) {
var nid1 = '#span1_'+numid.substring(2,10);
var nid2 = '#span2_'+numid.substring(2,10);
var nid3 = '#span3_'+numid.substring(2,10);
alert('Отработала функция получив значение > ' + obj + " <<>> " + nid1);
};