Попробуйте что-то вроде следующей функции, которая будет возвращать индекс n-го вхождения строки поиска s или -1, если найдено n-1 или меньше совпадений.
String.prototype.nthIndexOf = function(s, n) {
var i = -1;
while(n-- > 0 && -1 != (i = this.indexOf(s, i+1)));
return i;
}
var str = "some string to test";
alert(str.nthIndexOf("t", 3)); // 15
alert(str.nthIndexOf("t", 7)); // -1
alert(str.nthIndexOf("z", 4)); // -1
var sub = str.substr(str.nthIndexOf("t",3)); // "test"
Конечно, если вы не хотите добавлять функцию в String.prototype, вы можете использовать ее как отдельную функцию, добавив другой параметр для передачи в строке, в которой вы хотите искать.